As a warmup for this year’s Advent of Code, I’m re-reading and posting my solutions to last year’s challenges. You can read, run and edit today’s solution by following the post link.

Proving that the jump in difficulty yesterday wasn’t a fluke, today’s challenge required careful interpretation of the instructions, as well as parsing a complicated input describing how a bunch of monkeys update and pass values between them. I had originally (ab)used the incredible Petitparser package for this, and was surprised to see this is supported in DartPad so no rewrite was needed. Part two increased the number of rounds dramatically, so using the Least Common Multiple kept numbers under control without moving to BigInts.