My solutions for Advent of Code 2022, written in Rust.
This repository provides a good template for anyone interested in writing their solutions in Rust. Follow the instructions below to get started!
If you don't already have Rust installed, you'll want to install it here. Otherwise, the only things you'll need are a terminal/shell and a text editor (I recommend Helix if you're shopping for a new one).
To get started, you'll want to fork this repository and then delete any of my solutions I've submitted so far to keep yourself from being spoiled:
rm src/day*.rs
Also, in the src/main.rs
file, you'll need to delete all mod dayN;
declarations and use dayN::DayN;
statements, as well as reset the
get_day_solution
implementation to the following:
fn get_day_solution(day: usize, lines: impl Iterator<Item = String>) -> Box<dyn DaySolution> {
match day {
// 1 => Box::new(Day1::from_lines(input)),
_other => panic!("Day hasn't been solved yet"),
}
}
Now you're ready to go!. You'll want to log in to Advent of Code so that you can download inputs automatically.
Go to the Advent of Code site and log in at the top of the
page. Once you're signed in, you should open the Developer Tools and head
to the "Network" tab, and then reload the page. Look through your requests
until you find one that has your "session" cookie. Copy the contents of
that cookie (the alphanumeric string after the equals sign) sans quotes to
a file called .session
in this repository. Now you're ready to download
inputs from the terminal!
Note: the .session
file is .gitignored, so you don't accidentally upload
your login token to GitHub.
The prep-day.sh
script in the root of this repository will download your
input using curl
to a .gitignored .input
directory and then copy a
boilerplate module to src/dayN.rs
, so you can start working (almost)
right away! Here's how to run it:
sh prep-day.sh <day>
Just remember to update main.rs
with the suggestions printed by the
prep-day.sh
script to ensure that you can run your solutions.
To run your solutions for a day, run the following in the repo:
cargo run <day>
You should see something like the following:
❯ cargo run 1
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/aoc-2022 1`
Solving day 1...
Part 1: <solution> (0.000100000 seconds)
Part 2: <solution> (0.000300000 seconds)
If you have any issues getting this up and running, you can make an
issue on GitHub, email me at sam@sammohr.dev or ping
me on Discord at Smores#6844
; I'm happy to help anyone that gets stuck.
Good luck learning Rust for those of you picking it up, and enjoy the
gift of pulling your hair out puzzle solving for the holiday season!