- AoC '15 in Haskell (2 β out of 50 β)
- AoC '16
- AoC '17
- AoC '18
- AoC '19
- AoC '20
- AoC '21
- AoC '22 in Haskell and C++ (approx. 2/3 completed)
- AoC '23 in Haskell (approx. 2/3 completed)
- AoC '24 in Haskell, Rust and C++ (35 β out of 50 β)
- AoC '25 in Haskell (in progress)
- AoC '26 (yet to come)
The progamming language Haskell is very well suited for mathematical notions, pure computations and and has a terse syntax. It's often marketed as "an advanced, purely functional programming language", that is declarative and statically typed.
Sometimes, however, one needs stateful computations with e. g. arrays that are better expressed in an imperative language like C++.
I use C++ first and foremost because I'm too lazy to use C which would require me to implement a lot of data structures and algorithms myself.
Since I'm at least as lazy as Haskell, I use therefore sometimes C++, too.
If not necessary, I don't write object oriented code.
Rust is a good tradeoff between imperative and functional programming:
But for AoC '25 I'll do it only in Haskell.
Some nice videos about AoC on YouTube: