k2bd / advent-of-code-2022-rust

My Rust advent of code 2022 solutions

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

πŸŽ„ Advent of Code 2022

Solutions for Advent of Code in Rust.

Repo created from https://github.com/fspoettel/advent-of-code-rust

2022 Results

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

Usage

Scaffold a day

# 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. Use these unit tests to develop and debug your solution against the example input. For some puzzles, it might be easier to forgo the example file and hardcode inputs into the tests.

When editing a solution, rust-analyzer will display buttons for running / debugging unit tests above the unit test blocks.

Download input for a day

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, 2021...
# 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.

Run solutions for a day

# 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 your solution without overhead (e.g. file reads).

Run all solutions

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.20ms

all 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.

Run all solutions against the example input

cargo test

To 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.

Format code

cargo fmt

Lint code

cargo clippy

About

My Rust advent of code 2022 solutions

License:MIT License


Languages

Language:Rust 99.7%Language:RenderScript 0.3%