This was the first annual Advent of Code, albeit as I didn't start until 2020, this was one I completed in retrospect. For me the high points are:
- Day 6 : Always enjoy puzzles which make seemingly small changes in Part 2 that have the potential to fundamentally break everything. Almost adds a meta-challenge when developing Part 1 (since you can't see Part 2 until Part 1 is solved) to try and guess the twist...
- Day 7 : Dependency puzzles always add interesting challenges, and this is a potentially first step into search algorithms.
- Day 9 : Another path solving puzzle that can be brute forced, but can be a neat introduction into heuristic based searching.
- Day 10 : I do always enjoy scaleability puzzles. Part 1 will typically take you into an obvious but lazy solution, and Part 2 will penalize that. This doesn't quite hit the mark, but this is certainly something that has been refined to death in subsequent years.
- Day 11 : A nice one that makes you really think about how to iterate through a sequence, which is trickier when it's not a simple counter.
- Day 15 : I think I'd argue this was the first day that really forced a more optimal approach.
- Day 18 : Conways Game of Life is something everyone needs to solve at least once, and doing AoC, you'll do it way more times!
- Day 20/21 : Really like the way these two play off of each other. At first they seem like iterations of the same puzzle, but are fundamentally different problems.
- Albeit I can't help but feel on subsequent years, this would have been a single puzzle!
- Day 23 : Always enjoy a VM puzzle!
I do like the fact in subsequent years, the puzzles went away from "use industry standard algorithm to solve puzzle", such as MD5/Escape Sequences/JSON. The better puzzles tend to be ones where the language itself is mostly unimportant outside of basics such as array growth / hash maps etc.