Changes to Advent of Code starting this December
175 points by Mex
175 points by Mex
Glad they’re getting rid of the leaderboard. AoC is more valuable as a way to explore algorithms and novel languages than as a leetcode contest.
AoC is more valuable as a way to explore [...] novel languages
This is by far my favorite part of it. I've done at least a few days every year since 2019 and all of them have been languages that were new to me (except 2023 when I did Rust for a second time). I think it's a really nice way to naturally explore new languages.
Why so much antipathy towards the leaderboard? You're not the only comment mentioning this.
Couldn't you just ignore it and solve problems at your own pace?
Even if you didn't care about it, the constant whining from those that did generated a lot of hot air and contention.
Whatever value it had in the past has been ruined by people using LLMs to cheat. And yes, using LLMs to solve AoC problems is basically cheating, because part of the point is to solve the coding problems presented yourself.
I feel like part of the problem of the leaderboard is that it introduces a notion of cheating.
The whole point is... whatever you make of it. Want to learn to program in assembly? Go for it (use assembly). Want to learn to wrangle LLMs? Go for it. Want some algorithms practice? Go for it (don't use LLMs). And so on and so forth.
Obviously comparing the speed at which the person programming in mov-only-assembly finished the problem to the person programming in python finished the problem is... pointless.
Speaking for my own comment, it’s more an affirmation of Eric’s decision to narrow AoC’s scope to what’s most essential about it than active antipathy. The original holiday spirit behind the project was joyful and fun. It sounds like maintaining a global leaderboard was anything but. Competition is natural. It’s not what motivates me to code, but I if that’s what you found most fun about AoC, I’m genuinely sorry. It probably needs a different event format, at least at this scale.
I think the decision to cut down on the number of puzzles may also reflect the way that people engage with AoC. It certainly does mine: I usually start on the 1st and then begin lagging behind when the problems get more complicated, and by the time it's the 25th I have usually completely given up on finishing it.
Even if they cut it to 20 it would make a big difference to me. Those last few days are distinct from the rest of the month in a lot of people's personal lives.
Yeah if only because end of year stuff starts happening. Will try much harder this year to 100% it
we usually have a group from work doing it, and it tails off as we head into the christmas break (if they've not already given up). I think as a group, we've more of a chance of completion this time because there'll be people in the work slack to talk to about problems right to the end.
Last year I also did it in p5js - prompted by a bleeptrack toot that someone annoyed her by saying it wasn't for serious programmers - and tried to animated visuals for every answer... that I struggled with even more; I think I got about 14 days in and they were taking longer to think up and do than the puzzles, and I switched to just doing the answers. fun tho. (they got better as I learned how to use the language, eg this animated xkcd https://hachyderm.io/deck/@bazzargh/113622743090408785 )
This makes me reconsider my decision to skip this year...
I think this is great. Specifically getting rid of the global leaderboard: it’s basically impossible to get on it if you don’t live in the right time zone, and LLMs make cheating on it very easy (last year I remember seeing several people who just gave the challenge to Copilot and got in the leaderboard without even trying for the first few days), which just demotivates the people actually trying to get on it by actually doing the challenges.
I love AoC, so I am glad it’s not going away.
I hope the challenges this year are less tedious. It's fun to solve the problem, it's less fun to glue and bodge a bunch of transformations on the data before you actually solve the problem with it.
Can't wait (as always)! Still trying to decide which language I'm going to try it in this year. I'm leaning towards either Gleam or Elixir but haven't looked too much yet. Going back to 2019 I've done it in Kotlin, C, Rust, Nim, Rust, and then Racket. Kotlin, the first time doing Rust, Nim, and Racket were completely new to me and all 4 times I learned programming paradigms that were pretty different from what I was used to. I don't use any of those languages day-to-day but maybe once or twice a year I end up going back and looking at my repos from all the years and admire the way the languages do certain things.
I see no real downsides to this, and looking forward to that feeling of being finished and yet having more time left. (I have never gotten all stars, so it's really just a feeling :P)
I loved AoC and used to do it in a different language every year. Maybe this'll make me join again. Twelve days is pretty much about as much energy as I have in any given December.
I very rarely made it to the later puzzles (by the time the last ones come around, it's holiday season and my development machine has been offline for days) and it might be nicer to play without the leaderboards showing just how far beyond the top 0.01% I am, so this seems like it's probably an improvement.
Getting rid of the global leaderboard is much appreciated, though I'm a bit sad about cutting half of the puzzles. The later days were always the most entertaining to me (bonus points for having to reverse engineer the input for p2) and it just sounds like there will be fewer of those, in addition to having a shorter "ramp-up".
Oh well, life always takes priority, I guess, and after ten years one probably feels like something has to change to keep things interesting and/or sustainable
AoC has been an amazing project so far, and I'm glad the creator made some sensible decisions to scale it down instead of abandoning it entirely.
This is very reasonable. AoC puzzles—except maybe the first few years—are seriously good. It must take a long time to design them in a way that encourage such enjoyable, intuitive solve paths.
Having the event conclude mid-December is a great change as well. As much as I love AoC, Christmas celebrations take priority for me.
Usually I don't care about Advent of Code, maybe only doing a few days. A couple of years I have done the challenges during my summer vacation instead.
These two changes actually make me excited to consider doing it this year. 12 challenges feel like enough.
After 500 stars I was planning to stop doing AoC this year. But with those changes, I might stick around for another 500 240 :)
I wanted to do this in my own programming language this year and use the programs as both demos and tests at the same time, but then I saw that they don't allow publishing problem inputs, which means I can't use the code as tests, which makes them less useful. So I'll probably pass.
I kinda understand that they don't want you to copy puzzle text, but I don't understand what the problem is with uploading the inputs to a git repo.
Sometimes there are hidden constraints on the inputs that are deliberately intended to make a particular approach viable, when the general solution is far too complex. Conversely, sometimes there are little gotchas in the inputs that will trip you up if you make assumptions not stated in the puzzle text. And sometimes, for example IntCode or the reverse engineering puzzles, at least half of the puzzle is in the input itself and not the text. From what I've seen (I'm in the 500 star club), the puzzle inputs are often just as carefully crafted as the text.
That said, you'll often see on /r/adventofcode a number of posts or comments where people have offer inputs they've created themselves. Often these are either minimal reproductions of edge cases, adversarial inputs designed to foil common solutions while adhering to the puzzle text, or joke/fun inputs that produce a neat output when run through a solution or visualized.
Those user-created inputs are fair-game for publishing if you make them yourself. (Or if you can ask nicely and get permission from their creator.)
I'm not saying it's fine to upload the inputs but many people do it anyways because it's very easy to miss that part. In fact I had already uploaded some years when I first read that. And many people will still miss it because it's not something easy to notice on the website
AoC has always been copyrighted and Eric has said that he doesn't want people sharing the inputs online because there's a set of inputs for each puzzle and having all of them online would make the job easier for someone making a clone. Honestly I think if someone wants to make a clone it's still easy without the inputs online but that's what he says. Other platforms go even further, for example Project Euler asks you to not upload the solving code for any problem except the first ones.
I'm not saying it's fine to upload the inputs but many people do it anyways because it's very easy to miss that part. In fact I had already uploaded some years when I first read that. And many people will still miss it because it's not something easy to notice on the website
IIRC (and I'm not going to the internet archive to check my recollection) they used to just ask that you not attempt to aggregate inputs. NOT that you avoid publishing any of them at all. So you're likely "in the clear" for the older ones.
When someone gives me something cool like that, I try to abide by what they ask. And I suspect you were abiding by what they asked at the time.
I wanted to do this in my own programming language this year
Nice! I just thought I could do that with mine, depending on how far along I get. It'd be a good test of what I want it to look like.
I was hesitant to do AoC this year, because previously I've never got past day 5 or so, because the following days were too difficult for me. Glad to hear they reduced the number of days since doing only 5/28 made me feel like a failure :/
Does anyone have tips on doing those later, slightly harder AoC days? Might try again this year with Elixir.
Different people get stuck in different ways, so it's hard to give good tips without knowing what trips you up.
For me, doing a normal 4 year computer science program and reading some algorithms books (mentioned a little below) has been enough to get through most of them. Reading Introduction to Algorithms or The Art of Computer Programming may help, in particular information about list and graph algorithms helps a ton, and doing some of the homework problems in them.
Other than that, I feel like it's a lot of normal problem solving skills, like writing down a minimal sample of the problem on paper, thinking about that, taking a walk while thinking about it, that sorta thing.
You could also always "cheat", which is to say if you're really totally stuck on a day, you could go to the reddit thread for that day and see how other people approached it, and then look up and read about whatever algorithm or property they used and try to implement it yourself from scratch with that knowledge.
I would argue taking hints is no different than asking a TA in college for the right start to a problem.
The search/indexing of "this problem corresponds to this data structure/algorithm" is a skill learned over time, no shame in not immediately recognizing a pattern. The didactic value of implementing/understanding how the solution fits the problem is arguably much more useful than simply recognizing it as an instance, and helps anchor the recognition for the future.
Practice on previous years. There's things that come up almost every time, like https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm - often more than once, https://en.wikipedia.org/wiki/Cycle_detection#Tortoise_and_hare, and the Chinese Remainder Theorem (eg https://www.math.cmu.edu/~mradclif/teaching/127S19/Notes/ChineseRemainderTheorem.pdf). If you have to solve something that looks impossibly large consider ways to shrink the problem - eg don't search a whole maze but just look at junctions, does repetition mean you can ignore most of the problem? And writing code to draw the problem is often very useful.
The fact that every puzzle can be solved in a few seconds on a cheap computer is in itself a clue, if your code isn't going that fast you've probably missed a trick - especially if your code is already slow on part 1, you probably aren't going to solve part 2; and often later puzzles build on what you've been taught by the early ones (this isn't true of early years of AoC where the puzzles were more random)
I don't know this for sure, but I suspect that rather that ramping up the difficulty from 1 to 10 over 25 days they will instead just ramp the difficulty up from 1-10 over 12 days. So if you were getting stuck after 5 days before, you will probably get stuck after 3 days this year.
I'm not sure how you do AoC, but I don't think about trying to do day 1 on Dec 1, day 2 on Dec 2, etc. I just do it when I feel motivated and have some time to kill. It doesn't matter if it's in December or July. Another suggestion I have is that if you get stuck on 2025 day 3, go back to another year and solve puzzles in from that year. Eventually you can come back to the one you're stuck on.