480 stable releases

2022.0.66 Feb 25, 2024
2022.0.63 Dec 9, 2023
2022.0.59 Nov 21, 2023
2022.0.57 May 28, 2023
2019.12.168 Nov 30, 2020

#211 in Rust patterns

42 downloads per month

MIT license

1MB
28K SLoC

Crates.io Docker Hub codecov

Advent of Code solutions

Solutions to Advent of Code problems in Rust.

Running locally

The command line tool takes <year> <day> <part> as arguments and reads the problem input from stdin:

$ echo 14 | cargo run -q 2019 1 1
2

Installing from homebrew

The command-line tool can be installed as a brew tap:

$ brew install fornwall/tap/advent-of-code
$ echo 14 | advent-of-code 2019 1 1

Published crate

This crate is published to crates.io/crates/advent-of-code.

As a library it exposes a solve(year, day, part, input) function as documented on docs.rs/advent-of-code:

// Using the dependency added: advent-of-code = "*":
use advent_of_code::solve;

fn main() {
    assert_eq!(solve(2019, 1, 1, "14"), Ok("2".to_string()));
}

It also contains the command line program to run the solution:

$ cargo install advent-of-code
$ echo 14 | advent-of-code 2019 1 1
2

Docker image on Docker Hub

The command line interface is published to a fredrikfornwall/advent-of-code Docker image:

$ docker pull fredrikfornwall/advent-of-code:latest
$ echo 14 | docker run -i fredrikfornwall/advent-of-code:latest 2019 1 1
2

Generating flamegraphs on macOS

Install flamegraph with cargo install flamegraph and build a benchmark binary with:

RUSTFLAGS='-g' cargo build --release --bench benchmark

This will create a benchmark binary under something like ls ../../target/release/deps/benchmark-31ba773f80f7f5d8. Then profile and generate a flamegraph.svg by running

sudo flamegraph ../../target/release/deps/benchmark-31ba773f80f7f5d8  --bench 2020_07_1

Dependencies

~0–31MB
~460K SLoC