This was my second year diving into Advent of Code (AOC), the annual programming puzzle extravaganza. For the first time, I managed to complete all puzzles within the event. The shorter 12-day format this year (down from the usual 25) probably helped!

Advent of Code image

Here’s a quick tour of my journey through AOC2025, day by day.


Day 01: Secret Entrance

A gentle start. The challenge was rolling a “lock” from 99 to 00 and back—trickier than it sounds if your language’s modulus operator behaves differently. Once I got that right, I just needed two counters: one for stops on 0, and one for passes over it.


Day 02: Gift Shop

This day was all about efficiency. I treated each ID as a string instead of a number and made sure to discard impossible IDs as quickly as possible. Handling large ranges efficiently was the main hurdle.


Day 03: Lobby

A simple one once I realized each line could be treated as an array of characters. Comparing characters directly, as you would numbers, made this puzzle straightforward.


Day 04: Printing Department

A puzzle that was based around 2D visualization. I created a grid to represent the problem and stepped through the iterations logically. Part 2 just extended this process until no changes occurred.


Day 05: Cafeteria

Parsing integers was easy—but the ranges were enormous. Part 2 introduced the twist of skipping already-seen numbers, so I had to make sure nothing got double-counted.


Day 06: Trash Compactor

This one felt like a mini grid simulation. I aligned the input grid, then parsed values for part 1 with simple 2D array. Part 2 required reading vertically—turning the puzzle into a proper grid challenge.


Day 07: Laboratories

Hands down my favorite puzzle this year. Visualizations made it intuitive: I filled a map, counted ‘^’ hits for part 1, and then tracked the “futures” leading to ‘|’ characters for part 2. I saw some really impressive Visualizations on Reddit after this day.


Day 08: Playground

Here’s where I hit my first real struggle. I didn’t know a good way to merge sets until learning about the Union-Find data structure. Once I did, merging connected components became trivial, and counting them at the end was smooth sailing.


Day 09: Movie Theater

Part 1 was easy. Part 2, however, was brutal. The input file was enormous, making brute force impossible. Normalizing vertices helped, but the key was sorting rectangles and eliminating possibilities quickly. Edge cases in the input—like a slim cutout—meant I had to check all edges, slowing the search, but it finally ran in a reasonable amount of time.


Day 10: Factory

This was the beast. Part 1 used a DFS for button presses, manageable enough. Part 2? I had no idea. Reddit hinted it was a system of linear equations, but matrix algebra had been years ago. Most solutions online relied on libraries, thanks to free variables complicating things. With help from Claude and Wikipedia, I implemented my own solver—finally finishing on the 12th day.


Day 11: Reactor

Another DFS-friendly puzzle. Part 1 was just about correct implementation. Part 2 required tweaking search parameters and breaking the problem into sub-searches, combining optimal paths. Surprisingly elegant once you see the logic.


Day 12: Christmas Tree Farm

I absolutely hated this one. The trick was recognizing that pruning the search space solved the problem—except that trick doesn’t work with the sample input. I’m still unsure if there is an actual general solution to this problem. I am pretty sure it is simply a trick question.


Wrapping Up

You can check out all my solutions here.

Advent of Code completion badge