Module day21

Module day21 

Source
Expand description

§Dirac Dice

Constants§

DIRAC 🔒
Rolling the Dirac dice 3 times results in 27 quantum universes. However, the dice total is one of only 7 possible values. Instead of handling 27 values, we encode the possible dice totals with the number of times that they occur. For example, a score of 3 (1 + 1 + 1) only happens once in the 27 rolls, but a score of 6 happens a total of 7 times.

Functions§

dirac 🔒
parse
Extract the starting position for both players converting to zero-based indices.
part1
The initial deterministic dice roll total is 6 (1 + 2 + 3) and increases by 9 each turn. An interesting observation is that since the player’s position is always modulo 10, we can also increase the dice total modulo 10, as (a + b) % 10 = (a % 10) + (b % 10).
part2
Memoization is the key to solving part two in a reasonable time. For each possible starting universe we record the number of winning and losing recursive universes so that we can reuse the result and avoid unnecessary calculations.

Type Aliases§

Pair 🔒
State 🔒