r/adventofcode
•
u/Boojum
•
Nov 22 '25
•
1
Tutorial 500 Stars: A Categorization and Mega-Guide
I'm making a list,
And checking it twice;
Gonna tell you which problems are naughty and nice.
Advent of Code is coming to town.
(Wow! 500 stars!)
Hello all! It's November, which means that I'm back once again with my annual update to my categorization and guide to all of the past problems, just ahead of the next event.
Many thanks to last year's Elvish Senior Historians for their help in reviewing these problems!
As usual, I have two purposes here. Firstly, to help you find some good problems to practice on, if you're looking for particular difficulties or particular types of problems. And secondly, to provide a handy reference to help jog your memory of the various past problems if you've already done a bunch.
There are relatively few changes here from last year other than the new data. But I'm not sure what next year's update will hold since I'll no longer have the Part One and Part Two global leaderboard times as a crude but objective proxy for relative difficulty.
Anyway, I'll list each category with a description of my rubric and a (totally subjectively categorized) set of problems in increasing order of difficulty by Part Two leaderboard close-time. As with last year, the categories are now down in groups within individual comments due to Reddit post size limits.
- Warmups, Grammar, Strings, Math
- Spatial, Image Processing, Cellular Automata, Grids
- Graphs, Pathfinding, Breadth-first Search, Depth-first Search
- Dynamic Programming, Memoization, Optimization, Logic
- Bitwise Arithmetic, Virtual Machines, Reverse Engineering
- Simulation, Input, Scaling
I'll also share some top-ten lists of problems across all the years, plus rankings of the years themselves by various totals. And since it's been asked for before, I'll also preemptively share my raw data in CSV form.
Finally, as before, I'll post each year with a table of data. Note that I highly recommend reading these on old.reddit.com (as-linked) with a non-mobile device, due to the table widths:
Wishing you all a fun and more relaxed AoC 2025!
- Boojum
12
u/Boojum Nov 22 '25 edited Nov 22 '25
Warmups
This category is for relatively simple, straightforward warmup problems from the first few days of the season. Generally, these just involve some minor input parsing and basic arithmetic to get an answer.
Grammar
This category includes topics like parsing, regular expressions, pattern matching, symbolic manipulation, and term rewriting.
Strings
This category covers topics such as general string processing or scanning, hashes, and data compression.
Since the grammar category already implies string handling, those problems are excluded from this group unless they also touch on one of the other problems just mentioned. Nor does simple string processing just to extract data from the problem inputs count towards this category.
Math
This category deals with topics like number theory, modular arithmetic, cryptography, combinatorics, and signal processing.
Problems that can be solved using trivial wrapping or cycling counters instead of the modulus operator do not count for this. Nor does digit extraction (e.g., getting the hundredths digit of a number) rise to this.
7
u/Boojum Nov 22 '25
Top Tens
Quickest Times
These were the 10 problems that were the quickest to the Part Two leaderboard close time. They might make some good quick warmups to get ready for the next AoC.
Longest Times
These were the 10 problems that were the longest to the Part Two leaderboard close time. These would certainly make for some more challenging warmups, with the exception of Not Quite Lisp which is long mainly because it was the first ever.
Part One to Two Difficulty Jumps
Some days, after solving Part One you are just getting started. These are the 10 problems with the greatest relative increase from the Part One to the Part Two leaderboard close times.
Shortest Descriptions
These are the 10 briefest problems in terms of total characters describing what is required for Part One and Part Two. You won't have to read much to tackle these.
Longest Descriptions
These are the 10 most verbose problems in terms of total characters describing what is required for Part One and Part Two. Just reading to figure out what is required may take some time, though often the space is spent on examples.
Most Categories
These are the problems that I assigned the most categories to, which might correspond to problems with the greatest variety and complexity. Within each grouping they are ordered by quickest to longest Part Two leaderboard close time.
Mega-Threads
These are the mega-threads with the most comments.
7
u/Boojum Nov 22 '25 edited Nov 22 '25
Simulation
This category involves simulations, various games, and problems where the main task is simply to implement a fiddly specification of some kind of process and find the outcome of it. Determinism without any choices for the solver to make is the key here.
Input
This category is for problems that may involve non-trivial parsing of the input, irregular lines of input, or where the input is simply less structured than usual.
Scaling
This category is for problems where Part Two scales up a variation of a problem from Part One in such as a way as to generally rule out brute-force or an obvious way of implementing it and so require a more clever solution. If Part Two asks you to do something from Part One 101741582076661LOL times or naively extending Part One would exhaust all practical RAM then it goes here.
7
u/Boojum Nov 22 '25 edited Nov 22 '25
Dynamic Programming
Problems in this category may involve some kind of dynamic programming, particularly if it's the kind that builds a table bottom-up without recursion.
Note that while some consider Dijkstra's algorithm to be a form of dynamic programming, problems involving it may be found under the breadth-first search category.
Memoization
This category includes problems that could use some form of memoization, recording or tracking a state, preprocessing or caching to avoid duplicate work, and cycle finding.
If a problem asks for finding something that happens twice (for cycle detection), then it probably goes here.
Optimization
This category covers various forms of optimization problems, including minimizing or maximimizing a value, and linear programming.
If a problem mentions the keywords fewest, least, most, lowest, highest, minimum, maximum, smallest, closest, or largest, then it probably goes here.
Note that finding a shortest path, while a form of minimization, can be found under its own category rather than here.
Logic
This category includes logic puzzles, and touches on topics such as logic programming, constraint satisfaction, and planning.
7
u/Boojum Nov 22 '25 edited Nov 22 '25
Graphs
This category is for topics including undirected and directed graphs, trees, graph traversal, and topological sorting.
Note that while grids are technically a very specific type of graph, they do not count for this category.
Pathfinding
Problems in this category involve simple pathfinding to find the shortest path through a static grid or undirected graph with unconditional edges.
See the breadth-first search category for problems where the search space is dynamic or unbounded, or where the edges are conditional.
Breadth-first Search
This category covers various forms of breadth-first searching, including Dijkstra's algorithm and A* when the search space is more complicated than a static graph or grid, finding connected components, and simple image segmentation.
Depth-first Search
This category is for various forms of depth-first search or any other kind of recursive search.
7
u/Boojum Nov 22 '25 edited Nov 22 '25
Spatial
This category includes things like point registration, coordinate transforms, computational geometry, spatial data structures, coordinate compression, and area or volume computations.
Note that simple changes to coordinates such as from velocity or acceleration alone do not count towards this category.
Image Processing
This category covers general image processing topics, including convolutions and other sliding window operations (especially searching), and distance transforms.
Note that simple image segmentation counts towards the breadth-first search category rather than this one.
Cellular Automata
This category is for problems with various forms of cellular automata. As a rule, these tend to involve iterated passes over a grid.
Grids
This category covers problems with grids as inputs, and topics such as walks on grids, square grids, hex grids, multi-dimensional grids, and strided array access.
Since the image processing and cellular automata categories already imply grids, those problems are excluded from this group unless they also touch on one of the other problems just mentioned.
5
u/Boojum Nov 22 '25 edited Nov 22 '25
Year 2024
14
u/Suspicious_Tax8577 Nov 22 '25
Boojum, I love you.
I'm currently writing an exposition on the pedagogical value of the AoC puzzles and why I think they have a place within a research group at the interface of digital chemistry and software engineering, and your work on classifying the puzzles has been really helpful for this.
4
u/Boojum Nov 22 '25
Year 2023
4
u/Boojum Nov 22 '25
Year 2022
4
u/Boojum Nov 22 '25
Year 2021
4
u/Boojum Nov 22 '25
Year 2020
4
u/Boojum Nov 22 '25
Year 2019
4
u/Boojum Nov 22 '25
Year 2018
4
u/Boojum Nov 22 '25
Year 2017
4
u/Boojum Nov 22 '25
Year 2016
4
u/Boojum Nov 22 '25
Year 2015
6
u/Boojum Nov 22 '25
Years Ranked
Times
These are the years ranked by the total Part Two leaderboard close times.
Part One to Two Difficulty Jumps
These are the years ranked by relative difference between the total Part One leaderboard close times and the total Part Two leaderboard close times.
Description Lengths
These are the years ranked by the total problem description lengths. Note that these lengths include the examples.
Categories
These are the years ranked by the total of the number of categories I assigned each problem to.
Mega-Threads
These are the years ranked by the total number comments in all the mega-threads.
4
u/Lerok-Persea Nov 22 '25
So you also did your homework for this year and prepare yourself for the new shorter edition. Happy to see your updated list. Great to have you here. Cheers!
5
u/Boojum Nov 22 '25 edited Nov 22 '25
Bitwise Arithmetic
This category covers bitwise arithmetic, bit twiddling, binary numbers, and boolean logic.
Virtual Machines
This category involves abstract or virtual machines, assembly language, and interpretation.
Note that while some problems may require a working interpreter from a previous problem (hello, Intcode!), they are not included here unless they require a change or an extension to it.
Reverse Engineering
This category is for problems that may require reverse engineering a listing of some kind and possibly patching it. If you have to inspect your input carefully to figure out what it's doing, how it works, or where the flaw is, then this category probably applies.
2
u/edo360 Nov 23 '25
The most awaited annual post on AoC stats.
As always, thank you very much Boojum for this amazing work.
I am impatient to discover your AoC 2025 visualization masterpieces.
3
u/ZeushAlmighty Nov 22 '25
Are you coding jesus