My Advent of Code solutions
.aoc-cache | ||
aoc_proc | ||
src | ||
test_cases | ||
.envrc | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
day_9_debug.txt | ||
flake.lock | ||
flake.nix | ||
README.md |
aoc-2022
don't look in src/bin/day_*.rs
if you don't want spoilers.
yes some of this setup is needlessly overengineered
magic rust macros (tm)
yes
i thought teehee i could make a proc macro for this
using this
just don't
ok alright
Make a solution for a day:
// Some useful things, including macros + color_eyre
use aoc_2022::prelude::*;
type Input = String; // some mildly useful structure for the input data
fn parse(s: &str) -> Result<Input> {
// implement whatever scary string manipulation you like
Ok(s.to_owned())
}
// heres some macro magic ✨
#[aoc(
day = 100, // used to fetch the challenge stuff from AOC directly
parse = parse, // so I can reuse parsers if needed
test_cases = ["day_100.txt"] // loaded from `test_cases/`
)]
fn day_100(mut input: Input) -> Result<()> {
// do something remotely awful to solve the challenge
// probably should println!() the results or something
Ok(())
}
// macro: a wild main function appears!
auto-fetching
steal your session cookie from the browser devtools
make .env
and add AOC_SESSION=<your massive long session token>
maybe use direnv to make it easier to load the .env
file? (and the nix flake (yes theres one of those too uwu))