Now that Advent of Code 2024 has concluded, I wanted to get people’s opinion on what puzzles they especially liked looking back. This could be because of the puzzle mechanics, the description, because you are especially proud of your solution that day, or for any other reason.
Feel free to answer even if you only saw part of the puzzles.
My picks would be:
- 14 (Restroom Redoubt, robots moving into christmas tree shape). Even though it caught me off-guard in the moment, I did like that part 2 had this very imprecise requirement for once. Definitely made for varied, creative solutions.
- 15 (Warehouse Woes, robots pushing boxes) The second part was a fairly big complexity spike with just a minor change in the tasks. Basically a form of simulation where the hard part is finding a good data representation for the setup. I liked this one because debugging was such a visual process for me, by printing the grids.
- 17 (Chronospatial Computer, running a machine code) For me the first really tricky one, but still doable. These assembly puzzles are just neat. A lot of computation is started with a pretty small input, and the task is basically to really understand how this “computer” works.
What have been your favorites?
I liked all of the Maze solving puzzles. this was a good year for the best maze solving skills to be put to the test. at the end, I disliked 14, 15, and 17 for the simple fact that I am not well versed in solving those types of challenges and it is hard to visualize in my head properly. Did they push me? yes, but enjoyment was less than I had with the other puzzles.
I also enjoyed some of the corrupted memory solving puzzles like day 3 because I got to optimize with either
.index( )
or straight regex. I really enjoyed it. however, that pales to the pattern recognition puzzle that day 19 had. Day 19 was extremely fun. many people had to hand roll some kind of pattern solver. I eventually found a solution using Aho-Corasick Algorithm which brought my solution for part 1 and 2 to just about ~55 ms. it was extremely fast as I already had a solver that only took ~120 ms. (in python3) however, now that I looked in the solutions thread, it seems I was not the only one to think of trieand my solution was still slower than their solution, sad me. lolnvm I found I was rebuilding the trie everytime, only need to build it once, dropped to solve ot ~7 msI am still solving some of the later puzzles due to holidays but I had fun so far, even though some days I was not well equipped to solve efficiently or at all.
Day 19 is definitely my proudest solve (though learning about Aho-Corasick dampens it a little bit 😅) with some clever ideas to both check towels more efficiently than the naïve approach while creating no
String
s to avoid a bunch of heap allocation. Figuring out how to binary search without creating the target object, and merely knowledge of its properties and those of the list, meant I got to use a pretty niche library function and got my solution from 25 to 11 ms.Nice, don’t be shy to revisit these later on, I am definitely doing the same for older AoC years. I am happy you got it down that low. With python, I am really trying my best to make sure I can figure out a way to keep my solve times lower. Gives me challenge to fight a slow language faults with optimized logic haha
I will eventually get down with using python and be moving over to Rust. I will eventually be happy to move to an old functional language like Haskell. I don’t think I will learn those specialized languages like uiua, I don’t think I can get over the magic like symbols lol
My favourites were the ones where memorization just made them instantly fast.
Day 11 was interesting, in that the logical (imo) data structure for part1 was completely incompatible with part 2.
I really liked the ones that had multiple valid approaches. Some of the challenges were solved basically the same way by everyone, which was a bit uninteresting.
I also really liked day 17, because at one point the solution for part 2 just clicked and now it makes so much sense.
I think my favorite was the full adder on day 24. Even though I only solved part 2 manually, it was still a lot of fun to reverse an actual full adder and get familiar with all the required logic gates.
I agree with 15: I solved it pretty quickly and I like my solution, but what makes me really happy is that I’m pretty sure I couldn’t have solved it a few years ago.
Also day 11 (Plutonian pebbles): it’s such a simple problem, and part two is a perfect example of how and why to use dynamic programming. I’ve been encouraging everyone to try it.