Rust 98.6%
Nix 1.4%
Shell 0.1%
29 1 0

Clone this repository

https://tangled.org/nove.dev/aoc-2025
git@tangled.org:nove.dev/aoc-2025

For self-hosted knots, clone URLs may differ based on your setup.

README.md

cargo test runs all days against their inputs and checks the results. You need a Rust toolchain to do anything on this project, you can get one from rustup or by using the devshell in my Nix flake, if you know how to use those.

For each day, I have a module containing one function for each part, accepting a &str and returning a String. This is to avoid making invalid assumptions that could cause later refactors. I try to not change anything about part one's code when solving part two, I factor the string processing out into its own function, and try to keep code duplication down. I'm not going for high-quality code here, though; I write the first code that I can think of, and if it solves it, I move on.

Typically I like to do as much as reasonable with iterator combinators: .map(), .filter(). and the like. in previous years I used them even when it was more complicated than a procedural for loop; this year I'm trying to be more pragmatic with it.

I like when solutions involve graph theory, that was a favourite area of mine in uni. I'm hoping there will be more compsci theory, it keeps me sharp.

I anticipate getting stuck at some point, there usually becomes a point where the difficulty ramps up and I have trouble solving. There are good resources on lobste.rs that I plan to look into, especially the algorithms textbooks, since it's been a few years since my Data Structures and Algorithms courseload.

I wrote a little about it on my blog!

The inputs are included in this repo, with apologies to Eric Wastl (the creator of AoC). Maybe I'll encrypt them with rage or something, that might be fun.