Solutions for Advent of Code in Rust.
All solutions marked with ⭐ run in under 1ms in release mode (on my machine, your experience may vary). Solutions marked ✨ take longer than that.
| Day | Part 1 | Part 2 |
|---|---|---|
| Day 1 | ⭐ | ⭐ |
| Day 2 | ⭐ | ⭐ |
| Day 3 | ⭐ | ⭐ |
| Day 4 | ⭐ | ⭐ |
| Day 5 | ⭐ | ⭐ |
| Day 6 | ⭐ | ⭐ |
| Day 7 | ⭐ | ⭐ |
| Day 8 | ⭐ | ⭐ |
| Day 9 | ⭐ | ⭐ |
| Day 10 | ⭐ | ⭐ |
| Day 11 | ⭐ | ✨ 1.1 ms |
| Day 12 | ✨ 24 ms | ✨ 22 ms |
| Day 13 | ⭐ | ⭐ |
| Day 14 | ⭐ | ✨ 2.9 ms |
| Day 15 | ⭐ | ✨ 20 ms |
| Day 16 | ||
| Day 17 | ||
| Day 18 | ⭐ | ✨ 1.9 ms |
| Day 19 | ||
| Day 20 | ✨ 40 ms | ✨ 645 ms |
| Day 21 | ⭐ | ✨ 25 ms |
| Day 22 | ⭐ | |
| Day 23 | ✨ 4.8 ms | ✨ 575 ms |
| Day 24 | ||
| Day 25 | ✨ 12 ms |
# example: `cargo scaffold 1`
cargo scaffold <day>
# output:
# Created module "src/bin/01.rs"
# Created empty input file "src/inputs/01.txt"
# Created empty example file "src/examples/01.txt"
# ---
# 🎄 Type `cargo solve 01` to run your solution.Individual solutions live in the ./src/bin/ directory as separate binaries.
Every solution has unit tests referencing its example file. I yse these unit tests to develop and debug my solution against the example input.
Note
This command requires installing the aoc-cli crate.
# example: `cargo download 1`
cargo download <day>
# output:
# Downloading input with aoc-cli...
# Loaded session cookie from "/home/felix/.adventofcode.session".
# Downloading input for day 1, 2022...
# Saving puzzle input to "/tmp/tmp.MBdcAdL9Iw/input"...
# Done!
# ---
# 🎄 Successfully wrote input to "src/inputs/01.txt"!To download inputs for previous years, append the --year/-y flag. (example: cargo download 1 --year 2020)
Puzzle inputs are not checked into git. Reasoning.
# example: `cargo solve 01`
cargo solve <day>
# output:
# Running `target/debug/01`
# 🎄 Part 1 🎄
#
# 6 (elapsed: 37.03µs)
#
# 🎄 Part 2 🎄
#
# 9 (elapsed: 33.18µs)solve is an alias for cargo run --bin. To run an optimized version for benchmarking, append the --release flag.
Displayed timings show the raw execution time of the solution without overhead (e.g. file reads).
cargo all
# output:
# Running `target/release/advent_of_code`
# ----------
# | Day 01 |
# ----------
# 🎄 Part 1 🎄
#
# 0 (elapsed: 170.00µs)
#
# 🎄 Part 2 🎄
#
# 0 (elapsed: 30.00µs)
# <...other days...>
# Total: 0.20msall is an alias for cargo run. To run an optimized version for benchmarking, use the --release flag.
Total timing is computed from individual solution timings and excludes as much overhead as possible.
cargo testTo run tests for a specific day, append --bin <day>, e.g. cargo test --bin 01. You can further scope it down to a specific part, e.g. cargo test --bin 01 part_one.
cargo fmtcargo clippy