Advent of Code 2024
By 2024, Advent of Code had become something of a December tradition.
I had made it through previous years knowing that the problems would become more difficult as the month went on. This year felt different. The ramp-up was steeper, and by the later problems I found myself spending more time stuck than learning.
I kept my solutions in a GitHub repository: link
An Unfinished Year
I did not finish Advent of Code 2024.
Part of that was practical: it coincided with a vacation around Christmas, so I was not keeping the same daily rhythm as in prior years. Once a few days are missed, catching up turns a small daily puzzle into a growing backlog.
But the larger issue was motivation. By the end of the problems I attempted, the difficulty had increased enough that I suddenly lost interest in pushing through them.
The One that Stopped Me
The puzzle I remember getting stuck on was Day 21, Keypad Conundrum.
The goal was to enter door codes on a numeric keypad, but I could not press the keys directly. I had to control a robot using a directional keypad; that robot controlled another robot with another directional keypad; eventually the last robot pressed the numeric keypad.
Every move at one level had to be translated into a sequence of moves on the keypad above it. The problem was to find the shortest possible sequence of physical button presses needed to make the final robot enter each code.
The first part had a small enough number of robot layers that it was possible to reason about the sequences directly. The later version added many more layers, making a straightforward expansion of every possible command sequence far too large.
I could follow the individual moves, but I did not find the useful abstraction: treating a transition from one key to another as a reusable cost, then using recursion and memoization to calculate that cost across each layer of robots.
It was the point where the puzzle stopped feeling like something I could productively chip away at and started feeling like I needed to already know the intended technique.
A Different Kind of Hard
There is a useful kind of difficult: a problem takes time, introduces an idea you have not used before, and eventually gives way after enough thought or research.
Then there is the kind where the gap between reading the problem and seeing a path forward feels too large. That was more of my experience in 2024.
The problems seemed harder than the years before, particularly for someone working through them without using an LLM for hints, explanations, or implementation help. Whether that change was deliberate or simply how the puzzles landed for me, the effect was the same: they demanded more time and specialized knowledge than I was willing to give during the holidays.