My Advent of Code solutions
Find a file
2022-12-05 10:59:59 +00:00
.aoc-cache feat: day 5 (~20 mins) 2022-12-05 10:59:59 +00:00
aoc_proc feat: some cursed proc macro stuff to improve actual solution code 2022-12-01 14:51:24 +00:00
src feat: day 5 (~20 mins) 2022-12-05 10:59:59 +00:00
test_cases feat: day 4 (12:04.60) 2022-12-04 12:18:36 +00:00
.envrc feat: some cursed proc macro stuff to improve actual solution code 2022-12-01 14:51:24 +00:00
.gitignore feat: some cursed proc macro stuff to improve actual solution code 2022-12-01 14:51:24 +00:00
Cargo.lock feat: day 3 (17:01.34) 2022-12-03 12:07:13 +00:00
Cargo.toml feat: day 3 (17:01.34) 2022-12-03 12:07:13 +00:00
flake.lock feat: some cursed proc macro stuff to improve actual solution code 2022-12-01 14:51:24 +00:00
flake.nix feat: some cursed proc macro stuff to improve actual solution code 2022-12-01 14:51:24 +00:00
README.md docs: add a readme 2022-12-01 20:35:50 +00:00

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))