# D&D.Sci Holiday Special: How the Grinch Pessimized Christmas Evaluation & Ruleset

This is a follow-up to [](https://www.lesswrong.com/posts/boLvvZiRazNqipup7/d-and-d-sci-dungeoncrawling-the-crown-of-command) [last week's D&D.Sci scenario](https://www.lesswrong.com/posts/Cma9jQqvL29et8AeY/d-and-d-sci-holiday-special-how-the-grinch-pessimized): if you intend to play that, and haven't done so yet, you should do so now before spoiling yourself.

Full generation code is available [here](https://github.com/aphyer1992/dndsci-grinch/blob/main/dndsci_grinch.py) if you are interested, or you can read on.

RULESET
=======

Each of the six toys makes a different amount of noise depending on what child receives it:

*   A **Blum-Blooper** makes 6 noise.
*   A **Fum-Foozler** is more popular with female Who children - it makes 8 noise with a female Who child but only 4 noise with a male one.
*   A **Gah-Ginka** is very noisy, but too simple to hold the attention of older children for long.  It makes 11 noise - 1/2 (rounded down) the child's age (so anywhere from 11 for an Age 1 child to 5 for an Age 12 child).
*   A **Sloo-Slonker** is complicated, and small Who children won't use it very much.  It makes 5 noise + 1/2 (rounded down) the child's age (so anywhere from 5 for an Age 1 child to 11 for an Age 12 child).
*   A **Trum-Troopa** can be used to hold very noisy Trum-Troopa Battles with other Trum-Troopas.  If another Who child in the same family (having the same middle name e.g. Cindy **Lou** Who is in the Lou family) also has a Trum-Troopa, it makes 10 noise.  If not, it makes only 5.
*   A **Who-Whonker** is more popular with male Who children (who prefer Whonking things for some reason).  It makes 9 noise with a male Who child but only 5 noise with a female one.

Each child's noise is the sum of their two toys' noises.  Additionally, however, each distinct child has a **favorite toy.**  Any noise a child makes with their favorite toy is **doubled.**

For example, Johnny Drew Who, in our dataset, is a 4-year old Male Who Child whose favorite toy is the Blum-Blooper.  If he is given:

*   A Blum-Blooper and a Fum-Foozler, he will make 16 noise in total: 6x2 from the Blu-Blooper and 4 from the Fum-Foozler.
*   A Gah-Ginka and a Trum-Trooper, he will make either 14 or 19 noise in total: 9 from the Gah-Ginka, plus 10 if one of his siblings (Betty, Phoebe and Cindy Drew Who) also gets a Trum-Trooper and 5 if none do.
*   A Sloo-Slonker and a Who-Whonker, he will make 16 noise in total: 7 from the Sloo-Slonker and 9 from the Who-Whonker.

  
  
DATASET GENERATION
========================

There are three families: the Drew Whos, Lou Whos and Sue Whos.

Each year, Who Children age and may be born - each family rolls a d4 and has a new child if the roll is greater than the number of children they currently have.  As such, there are never more than 12 children (4 in each of the 3 families), and the overall number is sometimes a bit lower (average is around 3 children per family at any given time).  Then each Who child from age 1-12 is given two toys.

Each Who child, when they are born, is assigned a Favorite Toy at random.  

There weren't actually any tricks in this one.  I meddled with the RNG in only one minor way: the RNG by default had a 1-year-old Who Child just born this year, and I left that child out because there wouldn't be a way for you to determine their Favorite Toy.  Aside from that, the ages of Whos and what their favorite toys were was purely the RNG.

  
  
STRATEGY
==============

Once you know how the rules work, noise-minimizing strategy is to:

*   Assign each toy type to the child who likes it least: Fum-Foozlers to boys, Who-Whonkers to girls, Sloo-Slonkers to young children and Gah-Ginkas to older chidren.
*   Assign Trum-Troopers one per family, to avoid getting lots of noise from them.
*   Avoid assigning any Who child their Favorite Toy.

While noise-maximizing strategy is essentially the reverse.

The Who children and their Favorite Toys are:

| Name | Age | Gender | Favorite Toy |
| --- | --- | --- | --- |
| Andy Sue Who | 12  | M   | Sloo-Slonker |
| Betty Drew Who | 11  | F   | Fum-Foozler |
| Sally Sue Who | 11  | F   | Fum-Foozler |
| Phoebe Drew Who | 9   | F   | Sloo-Slonker |
| Freddie Lou Who | 8   | M   | Sloo-Slonker |
| Eddie Sue Who | 8   | M   | Who-Whonker |
| Cindy Drew Who | 6   | F   | Who-Whonker |
| Mary Lou Who | 6   | F   | Gah-Ginka |
| Ollie Lou Who | 5   | M   | Fum-Foozler |
| Johnny Drew Who | 4   | M   | Blum-Blooper |

One example of a noise-minimizing allocation is:

*   Andy Sue Who: Fum-Foozler, Gah-Ginka (9)
*   Betty Drew Who: Who-Whonker, Gah-Ginka (11)
*   Sally Sue Who: Who-Whonker, Blum-Blooper (11)
*   Phoebe Drew Who: Who-Whonker, Blum-Blooper (11)
*   Freddie Lou Who: Fum-Foozler, Blum-Blooper (10)
*   Eddie Sue Who: Fum-Foozler, Trum-Troopa (9)
*   Cindy Drew Who: Blum-Blooper, Trum-Troopa (11)
*   Mary Lou Who: Sloo-Slonker, Who-Whonker (13)
*   Ollie Lou Who: Sloo-Slonker, Trum-Troopa (12)
*   Johnny Drew Who: Fum-Foozler, Sloo-Slonker (11)

For a total of 108 noise.  One example of a noise-maximizing allocation is:

*   Andy Sue Who: Sloo-Slonker, Who-Whonker (31)
*   Betty Drew Who: Fum-Foozler, Trum-Troopa (26)
*   Sally Sue Who: Blum-Blooper, Fum-Foozler (22)
*   Phoebe Drew Who: Sloo-Slonker, Trum-Troopa (28)
*   Freddie Lou Who: Sloo-Slonker, Who-Whonker (27)
*   Eddie Sue Who: Blum-Blooper, Who-Whonker (24)
*   Cindy Drew Who: Trum-Troopa, Who-Whonker (20)
*   Mary Lou Who: Fum-Foozler, Gah-Ginka (24)
*   Ollie Lou Who: Blum-Blooper, Fum-Foozler (14)
*   Johnny Drew Who: Blum-Blooper, Gah-Ginka (21)  
     

For a total of 237 noise.

LEADERBOARD
===========

*Note: inputting the toy selections was a somewhat manual process, if you think I've scored you wrong let me know.*

| **Player** | **Noise** |
| --- | --- |
| **Noise-minimizing allocation** | **108** |
| GuySrinivasan (min) | 108 |
| abstractapplic (min) | 118 |
| simon (min) | 123 |
| Yonge (min) | 128 |
| MadHatter (min) | 129 |
| **Random allocation** | **165** |
| MadHatter (max) | 204 |
| abstractapplic (max) | 207 |
| simon (max) | 229 |
| **Noise-maximizing allocation** | **237** |

Congratulations to everyone who submitted, particularly to GuySrinivasan (who figured out the entire ruleset and got the perfect noise-minimizing allocation) and also to simon (who had the best Friendly Grinch solution).

  
FEEDBACK REQUEST
===================

As usual, I'm interested in feedback.  If you played the scenario, what did you like and what did you not like?  If you might have played but in the end did not, what drove you away?  Is the timeline too long/too short/just right?

In particular, I tried to make this scenario simple - there were a couple sneaky things (Favorite Toys and Trum-Troopers) but for the most part I think it was a lot less complex, and bearing this out we had a perfect answer from GuySrinivasan, and near-perfect answers from several others.  How do players think the difficulty of this compared to what you want to see?