Awesome
Advent of Code 2023
All my Advent of Code repos:
- AoC 2015 in Nim, Python
- AoC 2016 in Python, Clojure (+ visualizations)
- AoC 2017 in Nim, OCaml, Python
- AoC 2018 in Nim, Python, Racket
- AoC 2019 in OCaml, Python
- AoC 2020 in Nim, one liner-y Python, Racket
- AoC 2021 in Python, Racket
- AoC 2022 in Python, Clojure
- AoC 2023 in Clojure (this repo)
- AoC 2024 in Clojure (Clerk notebooks)
Last year I have used Clojure for the first time. I really liked the language (I've also written about how to make Clojure solutions faster), and I've decided it will be my main language this year.
As a preparation for this year, I used Clojure for AoC 2016 and I experimented with the quil
library to make some visualizations.
This year, I plan to do as much visualizations as I can, using the same library.
I currently don't have the time to solve in multiple languages, but I suspect I'll add solutions in some different language at some later date.
Task | Clojure | Comment |
---|---|---|
Day 00: Helper file | aoc.clj | Utilities I use to solve the tasks. |
Day 01 | day01.clj | Tougher than expected for day 1. |
Day 02 | day02.clj | Immediately calculate maximums. |
Day 03 | day03.clj | Tedious parsing. |
Day 04 | day04.clj | Set as a predicate for keep . |
Day 05 | day05.clj | Toughest one so far. |
Day 06 | day06.clj | Will the real Day1 please stand up? |
Day 07 | day07.clj | Changing card representation is the real MVP. |
Day 08 | day08.clj | Underwhelming to see that to be solution for part 2. |
Day 09 | day09.clj | .esreveR |
Day 10 | day10.clj | No BFS needed. |
Day 11 | day11.clj | Off-by-one trap! |
Day 12 | day12.clj | Immutability, meet my friend atom . |
Day 13 | day13.clj | My helper functions to the rescue. |
Day 14 | day14.clj | Very slow solution. There must be a better way. |
Day 15 | day15.clj | Advent of Reading. |
Day 16 | day16.clj | Is this a cousin of Day 10? |
Day 17 | day17.clj | Consider only L/R directions, and then go straight as far as you can. |
Day 18 | day18.clj | TIL about Shoelace formula and Pick's theorem. |
Day 19 | day19.clj | Simpler ranges than Day 5. |
Day 20 | day20.clj | Some manual searching through the input needed. |
Day 21 | day21.clj | Polynomial interpolation. |
Day 22 | day22.clj | Jenga! |
Day 23 | day23.clj | Compressing the graph for part 2. |
Day 24 | day24.clj | Don't ask me how this works. |
Day 25 | day25.clj | Monte Carlo to find "hot" edges. |
<!-- ## Visualizations -->