Advent of Code 2025 - recap
This year marks the first time I’ve been so thorough with my documentation & problem solving. I’ve tried Advent of Code before in 2024 but I’ve given up after about day three 🤔 with no history whatsoever.
I’ve managed to fully complete 8 challenges and partially complete 2 challenges, but what I’m most proud of is how much I’ve learned & applied, from topics such as DFS with memoization to P and NP problems. I’ve never expected problems to be so complicated, and most of the topics were stuff I’ve met with only in theoretical form. Having to actually implement a working prototype is a step forward to a better understanding.
Anyway, here’s a leaderboard I’ve used to motivate myself on days I’ve felt like skipping - it really helped to have a positive competition.
What is Advent of Code?#
Taken straight from the About page:
Advent of Code is an Advent calendar of small programming puzzles for a variety
of skill levels that can be solved in any programming language you like.
People use them as interview prep, company training, university coursework,
practice problems, a speed contest, or to challenge each other.
It’s basically a yearly competition centered around logical programming problems. I say logical because (something I’ve acknowledged this year too!) you don’t actually need to solve the general problem - you just need to solve for the given input.
What I expected#
Given my previous interaction with the event, I expected some general problems centered around basic concepts, maybe some string manipulations, some simple mathematical operations and general algorithms, all with a holiday twist.
Also, I expected the lack of motivation - expecially when the difficulty grows.
What I’ve learned#
First, there’s a lot of stuff I did not know.
Most of it boils down to Python libraries, such as itertools - I heard about it, but I did not had the opportunity to use it, or to programming concepts that I’ve mentioned earlier.
Also z3, I still don’t understand what this library is supposed to do …
I’ve also tried a new programming paradigm, test driven development, where I first write some basic test functionality using assert and I move on only after these tests pass.
It’s pretty neat and very good at catching bugs if you modify the original algorithm.
Second, reading other people’s work. Moreover when I did not know how to continue. I can’t say I did the problem by myself, but if I understand the thinking behind the solution, at least I’ve learned something from this situation 😊.
What I plan to do in the future#
I’ll surely come again this year! That’s a must.
Until then, I want to do some stuff:
- try previous challenges (maybe in other languages too - for some additional practice)
- look for other competitions, mainly because this aspect makes me wanna stick to the task at hand
- share the event with others, because it’s easier when you do it together
- learn a bit about highly theoretical aspects of programming (such as combinatorics)
To finish with a bit of style, I’ll leave you with a riddle.
I am not a name, yet you call me.
I am not a book, yet you return me.
I am not a tree, yet you branch me.
I am not a ball, yet you pass me.
Here’s the answer encoded in base64 : ZnVuY3Rpb24=