day2 - part1
4 files changed, 2586 insertions(+), 0 deletions(-) A day2/Cargo.lock A day2/Cargo.toml A day2/input.txt A day2/src/main.rs
A day2/Cargo.lock => day2/Cargo.lock +7 -0
@@ 0,0 1,7 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "day2" version = "0.1.0"
A day2/Cargo.toml => day2/Cargo.toml +8 -0
@@ 0,0 1,8 @@ [package] name = "day2" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies]
A day2/input.txt => day2/input.txt +2500 -0
@@ 0,0 1,2500 @@ B Z B X C Y B Y B Y A X A X B Z A Z B Z B Y B X C X B Y A Z B Y A X B X C Y B Y B Y C Y B X B X C X B Y B Y B Y C Y C X B Y C X C X B Y B Z C Y B Y B Z B X B Y B Y C Y B Y C Y C Y A Z B X C X B Y B X C X A X B Y C Y B X C X C Y B X B Z B Y B X C Y B X B Y B Y B Y B Y A X A Z B Z B Y C X B Y B Y C Y C Z C Z C X B X C Z B Y B Y C X C Z C X A Z C Y B Y B Y B Y C Y C Y C X C X C Z A X B Y C X B Z B Y C X B X B Z A Z C Y B Z C X C X B Y B Y B Y C Y C X B X B Y A Z A Z C Y B Y C Y C Y C Y B X A Z C Y C Y A Z A Z B X B Y B Z A Z B X B Y C Z C Z B Z B Y B X A Y C Z C X A Z A Z B Y B Y C Y C Y B Y B Y B Y A Z C Y C Z C X A Z B X B Y A Y A Y B Y B Y C X B Y B Y C Z B Y B Y A Z C Y B X C X A X C X B Y B X A Z C X C Y A Z B Y A Z B X B X A Z B Y C X C X A Z A X C X C X C X B Y C Z C Y C X B Y B Y B Y A X A Z C Y B Y B Y A X C Y C Z C Y C X B Y B Y B Y B Y A Z B Y A Z B X B Y B Y B X C Y A X A Z B Y C Y C Y B Y B Y C X B Y B X A Z B Y B Y C Y B Y B Y B Y A X B X B Z C Y B Z C X C X B Z B Y A Z A Z B Y C X A X C Y B Y B Y A X B Y A Y C Y B Y C X B Y A Z B Z C Y B Y B Y C X B Y B Y B Y C Z A X B Y B X C X C Z C Z C Y C Y A X C Y B Y A X C X A Z C X B Y C Z C Z A Z A X C Y C X B Y C Z B Y C Y C X C Y B Y B Y B Y A X A Z B Y B X B X B Y B Y B Y A Z B Y B Y A X A X A Z A Z B X C Y A Z B Y B Y C Z C X C Y A Z C Y C Y C Y C Y C X A Z C Z A Z C Y C X B Y B Y C Z B X B Z C X A Y C Y B X B X B Y C Y A Z A Z B X B Z B X C Y A X A X C Z B Y C Y C X B Y A Z B Y C Y B Z C Z C X B Z C Z B Z A X C Y A Z B Y B Y B Y B Y B Y B Y A Z C Z B X C X C Y C Y B Y C X C X A Y C Y C Y A Z C Z B Y B X C X B Y C X B Y B Y C X B Y B Y B Y A Z C Y B Z B Y C X B Y C X A Y A Z B Y B Y B Y A Z B Y B Y B Y B Y B Z C Y B Z B Z A Z B Y B Y C X A X B Y A Z C X C X B Y B Y A X B Y B Y C X B Y C X B Y B Y B Y B Y A X B Y B Z B Y A Z C X C X C Y A Z C Y B Y B X A X B Y A Z B Y C Y B Y B Y C Y C X A Z A X A Z C Z B Y B Y C Y B X C X B Y A Z B Y C X A X C X C Y C Y B X B Y B Y C Z B Y C X A Z C Z C Y A Z C X C Y C Y C X B Y B Y C Z A Z B Y A X B Y A X A X C Y C X A Z B Y C Y C X B Y B Y B Y B X B X A X C X B Y C Y A Z A Z A Z B Y A Z B Y C X B Y C X C Y A Z B Y B Z A Z B Y A Z B Y B Y C Z B Y B Y A Z A X C Z C Z B Z B Y A Z B Y B Y B Y B Y C Z A Z C X B X B Y A X A X B Y A Z A X C Y B Y C X A Z B Y C Z C Y B Y A X C Y B Y B Z A Y B Y B Y A Z B Y C Z C X B Y A Y C Z B X A X B Y B Y B Z B Z C Y B Y B Y A Z A Z B Y B X C Y C Y B Y B Y B Z B Z B Y C Y A Z B Y A Z B Y B Y A Z A Z C X C Z B Y C X B X A Z B Y B Y C X B Y B Y B Y B Y B X B Y A X B Z A Z C Z B X A Z C Y C Y A Z B Y C Z C Z C Y B Y B Y B Y A Z B Y B X C X B Y B Y B Y B Y C Y B Y C Y B Y C Y C X A Z C Y C Z C Z B X C Y B Y B X C Y B Y B Y C Y C X C X A Z B Y C X A Z C Z B Y B Y C X C X B Y B X C Y B Y B Y A Z A Z C Z A Z B Y C X C X B X B Y B Y B Z B Y B Y B Y B Y B Z B Y C Y C Z B Y C Y C Y C Y C Y A Z A Z C Y C Y A X B Y C Y A X C X C Y A Z B Y B Z A X B Y B Z B Y B Y B Z C X C Y B Y B Z B X A Z B Y C Y B Y B Y A X C X B Y C X B Y C Y A X A X A Z C Y B Y C Y C X B X C X C X A X A Z B Y B Y B Y A Z B Y B Y B Y B Y B Y B Y B X B Y C Y B Y A Z B Y C X C Y B Z C Z B Y A Y C X B Y B Y B Y C X A Y C Z B Y C X C Y C Y C Y C X C Y B Z B Y C Y C X B Y B Y B X C Y B X C Z B Y C X B Z C X B Y C X B Y C Y C Y A Z C Y C X B Y C X B X A Z B Y A Z A Z A Z C Y B X A Y C Y B Y B Y C Y C Y C X B X A X A Z C X A Y B X C Z B Y B Y B X C X B Y B Y B Y B X B Y C X B Y B Y C Z C Y B Y C Y B Y A Z C Z A Y B Y B Y B Y C Y C Y C Y B Y C Z B Y C Z A Z A Z C Z C Y C Z C Y A Z C X B X B Y C Y B Z C Z C X B Y A Z B Y C X B Z A X B Y A Z C Z C X C X C Y B Y B Y A Z A Z B Y B X A Z B Y C Y A X C Z B Y B X B Y C Y C Z B Z A Z B Y A X C X B Y A Z C X B Z C Y C Y C X C X C Y B Y B Y B Z B X C X B Z C X B X C Z C Z C X B Y C Y C X B Y A Z C Y C Z C Z C Y B Y A X C Z C X B Y C X C Z B Y C Y B Y C Y A Z B Z C Z C X B Z B Z B Y A Y C Y C Y B X B X B Y B Y B Y C X B Z B Y B Y B Y C X A X C Y A X B Y B Y B Y B Y B Y C Y C Y B Y B Y B Y B Y C Y B Y C X B Y B Y C X A Z A X C Y C Z B Y C X B Y B X A Z B X B Y B Y A Z B Y B Y B Y B Z A Z A X B Y A Z C Y B Y C X B Y C Y B Y B Y C X C Y A Y C X C Y B Y A Y A Z C Z A Y A Z B Y C Y C Y B Y B Y B Y B Y A Z B Y B Y B Y C X C X B Y C X B Y A Z B Y B X C Z C Y A Y B Y C Y B Y C Y C Y C Y C X C Y B Y B Y C Y B Y C Y A Z A X B Y A Z B Y C X C X B Y C Z B Y B Y C Y B Y C Z A Y B Y C Y B Y A Z C Y B Z C Y C Y C Z B Y C X B Z B Y B Y B Y C Z B Y B Y B Y A Z C X B Z B Y B Y C Y B Y C X B Y B Y C Y C X C Y B Y B Y C Y B Y A Y B Y A Z B Y B Y B X A Z B Y B Y C Y C X C Z A Z A Z C X B Y C Y B Y C X B Y B Y C Y C X B Y B Y B Y B Y B Y C X B Z B Z A Z B Z B Y B Z B Y C Y A Z A X B Y C Z B X A X C Y B Y B Y C Y B Y C Y B Y A Z B Y B Y A Z B Y B Y A Z B Y B Y B Y B Y C Y B Y A X A X B Y B Y A Y C Z A Z A Z B Y A Z C Y B Y B Y B Y B Y C Y B Y A X B X B Y B Y B Y B Y B X C Y B Y B Y B X C Y A Y B Y B Y B Y A X B Z C X A X C Z B Y B Y B Y C X B Y B Y B Y B Y C Y B Z B Z B Y B Z B Y B Y C Z C Y B Y C Z C Z B Y C X A Y B Y B Z A Z B Y C X B Y B Y C Z A Z B Y B X B Y C Y B Y B Z B Y B Y C X C X C Z B Y B Y B Y A Z A X B Y A Z B Y B Y B Y B Z C X C Z B Y B Y B Y C Z B X C Z A X B Y C Y B Y A Z A X C X B X A Z C X B Y C Y B X A Z C Y C Y B Z C X B Y C X C Z C Y B Y C Z B Y B Y C X B Y B Y B Y B Y B Y B Y C X B Y B Y B Y A Z B Y B Y C Z B Y B Y B Y C X A Z B Z C Y C Y B Y A X C Y B Y C Z B Z B Y B Y C Y B Y B Y B Y C Z A X B Y C Y A X B Y B Y A X B Y A Y C X A Z A Z C Y B Y C Z C Y C Y C Z A Z A X C Z B Y C X A Z C X B Y B Y B Y C Z C Y C X C Y A Y C X A Z A Z B Z C X B Y B Y C X A Z C Z C Z B Y B Y A Y C X B Z B Y B Y C X C X C Z C Z B Y B Y B X B Y B Y C Z C Y C Z B Y B Y B Y C Y B X C X A Z C X C X C Y B Y B Y C Y B Z B Z C X C Y B Y B Z B Y B X A Z C X B Z A Z C X B Y C Y C Y B Y B Y B Y B X A X B Y A X A Z C Y B Y B Y B Y B Y B Y C Z B X B Y C X A Z B Y B Y A Z B Y C Y C Z C X C Y B Y B Y B Z B Y A X C Y B Y A X B Y C X A Z B Y C X A Z B Y C X C Y C X B Z C Z B Y C Y C X C Y B Z B X A X C Z B Y B Y C Y B Z C X C X B Y B Y C Y B X B Y C Y B Y B Y A Z B Y B Y B Y A X A Z B Z B Z B Y A Z B Y C Y B Y C X B X B Y B Y B X C Z B Y C Z C X B Y C Z B Y C Y B Z C Y C Y C Z C Z A X B Y A Z B Y B X A X B Y B Y B Y C Y B Y B X B Z C Z B X B Z B Y C Y B Y B Z C X A Z B X B Z C X C Z B Y A Z C X C Y B Z B Y C Y B Y C Y B Y B Y B Y C Y B Y C Y C X C Z B Y B Y B X C Z B X A Z C Y A Z C X C Y B Y C Z B Z C Z C Y C X B Y C Z C X B Y B Y B Y B X B Y B Y C X A X B Z C X C Z B Y C Y B Z C Z B Y C X B Y B Y A Z C Z B Y C Z C X B Y B Y C X C X C Y B Y A X A Z B Y C X B Y B Y C Y B Y A Z A Z C X C Z C X C X A X B Y B Y C Y C Z C Y B Z C Y B Y B Y B Y C Y B Z B Y B Y B X C Y C Y B Y A X C X A X C Z C Y A Y B Y B Y B Z C X C X B Y A X B Y A Z B Y A Z C X C X B Y B Y B Y B Y A X B Y B Z C Y C X C Z C Z B Y C Z B Y B Y C X B Y A X A Z B Y A Z C X B Y C Y B Z C Z B Y B Y B Y B Y C Y C Z B X B Y A Y C Y B Z B Y C Y A Z B Y B Y C Y C Y A Y C Y A Z C Y B X B Y B Y C Y A Z C Y A Z B Y B Y B Y B Y A X C Y A Z B Y B Y B Y B Y B Z C Z C Y C X B Y C X B Y B Y B Y B Y A Z B Y C Y C Y A Z A X B Y C Y C Y B Y C Y C Y C Y C Z A Z C X C Y C X B Y B Y C X C Z C X C Z B X B Y C Z B Z A Z C Y B Z C Y B Y A X B Y A Z B Y A X B Y B X B Z B X B Y B Y B Y C X B Y B X C X B Y B Z B Y C Y B Y B Y C X A Z C X B Y C Y C Z B Y C Z B Y B Y B Y B Y C Z C X C Y C Z B X A Z A Z B Y B Z C Y A X B Y B Y A Z B Y B Y B Y B Y A Z C Z B Z C Y A Z C Y B Y B Y B Y B Z B Y C X C Z B X C X B Y C Z C X B Y A Z A Z B Y B Y B Y C X A Y B Y B Y A Z A Z C Z C Y B Y B Y A X B Z A X B Y A Z B Y C X B Y A Y B Y B Z B Y B Z B Y B Y C Y C Y B Y C X C Z B Y B Y B Y C Z A Z C X B Y B Z B Y C Y B Y C X B Y B Y C Y B Y B Y B Y B Y B Y B Y B X B Y B Y C X B Y B Z A Z A Z C X B X B X C Y C Z B Y C X A X B Y C X C Z C X B Y B Y C Y B Y B Y B Y A Z C Z C X B Y B Y A X B Y C Y B Y B Y C Y B X B X A X C Y C Z C Y B Y B Y C X A X A X C X B Y C X B Y B Y B Y C Y A Z B Z A Z B Y B X C Y B Z B Y A Z B Y C Y B Y C Y A X B Y B Y B Y C X A Z C Y B Y B Y B Y C X B Y C Y B Y B X C X B Y B Y C Y C X C Z C Z B Y B Y B Y B X C X B X A Y A Z C Y A X B Y B Y B Y A Z C Y C X C Y C Z A Z B Y B Y B Y B Y A Z B Y A Z B Y B Y C Y C Z C Y A Z C Y B Y C Y B X B Y A X C Z C Z A X C X C Z C X C X B Y A X A Z C Y B Y C X B Y B Y B X C Y C Z B Y B Z A Z C Y B Y A Z B Y C X C X B Z C Y B X B Y C Y B Z A Z C X C Y C X C Z B Z C Z B Y B X B Y B X B Y B Y B Y B Y C X C X C Y B Z C X B Y B Y B Z C Z C Y B Y B Y B Y C X B Z B Y B X B Y C Y C X C Z C X C Y B Y B Y B X B Y C X B X A X B Y C Y B Y A X C Y B Z B Z C X C Z C X B Y C Y C Y B Y C Z B Y C Y B Y C Y A Z B Z C X C X B Y B Y B Z B Y B Z A X C X C X B Y C X A Z C Y B Y A Z C Z B X C Y C X C X A Z B Y B Y C Z B Y A Y C Y B Y B X B Z C X B Y B X C Z B Y B X B Y B Y B Y A Z A Z B Z A Z C Y C Z B X C X A Z C X B Y B Y A X B X B Y B X B X A Y A Z C X B Z B Z C Y C Y B Y B Y B Y A Z A Z B Y B Y C Y C Y C Y C Z C X C Y B Y B X B Y A Y A X C Y B Y A Z B Y B Y C X C X B Y B Y C Y A Z B Y C Y C Z C Z C Y A Y B Y B Y C Y B X C Z C Z C Z B Y B Y B Y C Y A Z B Y A Z B Y A Z C X C Z C Y B Y A Z B Y B Y C Z B Y C X B Y C Y C Y B Y B Y A X C Z B Y C Y C X B Y B Y B Y B Z A Z B Y B Y B Y A Z B Y A X B Y B Y B Y C Y C X C Y A Z B Y C Y B Y C Y C Y C Y A X C Z B Y B Y C Z B Y B Y C Z B Z B Y C Y B Y B Y B Y B Y B X C X C Y B Y A Z B Y A X B Y B Y B Y B Y C Z C Z B Y A Z B Y C X C X C Y B X A X B X B Y C X C Z C Y C Y B Y C Z B Y B Y C Z A X B Y C Z B Z B Y C X C X B Y B Y B X C Z A Z A X B Y C X B Y B Y C Z B Z C Y B Y B X C X C Z B Z B Z C Y B Y A X B Y B Y C X B X A Z B Y A Z B Y B Y A Z C X C X B Y B X B Y A Z C Y C Z B Y B Y A X B Y C Y C Y B Y A X B Y B Y A Z C X C X C Y B Y A X B Y B Y C Y B Y B Y B Y B Z B Y C Y C Y B Y C X C X B Y C Y B Y C X B Y B Z B Y A Z A Z C X A Z A Z B Y B X C Z B Y B Y B Y B Y B Y C X C Y B Y A X C X C X C Y B Y C X C X C Z B Z C Y C X B Y B Y C X B X C Z B Y B Y C Y A Z C Y C X C Y B Y B Y C X C Y C Y C X B Z B Z B Y B Y C Y B Y C X A Z A X C Z B Y C Y C Y B Y B Y C Y B Y
A day2/src/main.rs => day2/src/main.rs +71 -0
@@ 0,0 1,71 @@ use std::fs::File; use std::io::{self, BufRead}; use std::path::Path; use std::str::FromStr; pub enum Round { LosingRock, WinningRock, DrawRock, LosingPaper, WinningPaper, DrawPaper, LosingScissor, WinningScissor, DrawScissor, } impl Round { fn score(self) -> i32 { match self { Round::LosingRock => 1, Round::WinningRock => 7, Round::DrawRock => 4, Round::LosingPaper => 2, Round::WinningPaper => 8, Round::DrawPaper => 5, Round::LosingScissor => 3, Round::WinningScissor => 9, Round::DrawScissor => 6, } } } impl FromStr for Round { type Err = (); fn from_str(s: &str) -> Result<Round, ()> { match s { "A X" => Ok(Round::DrawRock), "A Y" => Ok(Round::WinningPaper), "A Z" => Ok(Round::LosingScissor), "B X" => Ok(Round::LosingRock), "B Y" => Ok(Round::DrawPaper), "B Z" => Ok(Round::WinningScissor), "C X" => Ok(Round::WinningRock), "C Y" => Ok(Round::LosingPaper), "C Z" => Ok(Round::DrawScissor), _ => Err(()), } } } fn main() { if let Ok(lines) = read_lines("./input.txt") { let part1_score: i32 = lines .into_iter() .flatten() .map(|l| l.parse::<Round>().expect("Error parsing round")) .map(|r| r.score()) .sum(); println!("Part1 score: {}", part1_score); } } fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>> where P: AsRef<Path>, { let file = File::open(filename)?; Ok(io::BufReader::new(file).lines()) }