diff --git a/day2/Cargo.lock b/day2/Cargo.lock new file mode 100644 index 0000000..63c2f60 --- /dev/null +++ b/day2/Cargo.lock @@ -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" diff --git a/day2/Cargo.toml b/day2/Cargo.toml new file mode 100644 index 0000000..8aa34bb --- /dev/null +++ b/day2/Cargo.toml @@ -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] diff --git a/day2/input.txt b/day2/input.txt new file mode 100644 index 0000000..20e0cef --- /dev/null +++ b/day2/input.txt @@ -0,0 +1,2500 @@ +C Y +C X +A Z +B X +B Z +C X +C X +B Z +C X +B Z +C X +C X +A X +C Y +A X +C Y +B Y +C X +C Y +B Z +A X +C X +B X +B X +B Z +A Z +C Z +B Z +B Z +C X +B Z +C X +B Z +B Z +C X +C Y +B Z +C Y +A Z +B Y +C X +C Y +A Z +B Z +B Z +C X +C Y +B X +B Z +A X +B X +A X +B Z +C Y +C Y +A X +C X +C X +B X +A Z +C Y +C X +B Z +A Z +C Y +B X +C Y +B Z +C X +B X +B Z +B Z +C Z +B Y +C Y +B Y +A Z +A X +A Y +A Y +C Y +C X +C X +B Z +B X +C X +B Z +A Z +C Y +C Z +C Z +B X +B Z +C Y +A Y +A X +C X +B Z +B Y +B X +B Z +B Z +A X +C Y +C Y +C X +A X +B Z +A Z +A X +B Z +C X +C Z +C Z +C Y +C Z +B Z +C Z +C Y +B Z +A X +C Y +B X +C Y +B Z +C Y +A Z +A X +B Z +A X +A Y +B Z +C X +C Y +C Y +B Z +B Z +A Z +C X +A Z +A X +A Z +B Z +B X +A Z +B Z +B Y +C X +C Y +C X +C X +A Z +A Z +C Y +B Z +C Y +B X +C Y +C Y +B Z +C X +B Z +A Z +C Y +C Y +B Z +A X +C X +B Z +C X +B Y +A Y +C X +B X +C Y +B Z +C Z +C X +C Z +B Z +B Y +A X +A Z +B Z +A Z +C X +A X +C X +C Y +C Z +A Z +B Z +B X +B X +A Y +B Y +C Y +B Y +B Z +A X +A Y +A Z +B X +B Z +C Z +C Z +B Z +C Y +C Y +C X +C X +B Z +B Z +C Y +A Z +C X +C Y +A Y +A X +B Z +C Z +C X +C X +C X +A Z +C Y +B Z +B Z +C X +C Y +C Z +B Z +C Y +A X +A Z +A Z +C Y +A X +B Z +C Y +C X +C X +B Z +C Z +B Z +B Z +B X +A Z +C Y +C Y +C X +B Z +B Y +B Z +B Z +C Y +A X +A Y +C Y +A X +C Y +C Z +A Y +A X +B Z +A X +A X +A Y +B X +B Z +C Z +B Z +B Z +B X +B X +C X +A X +C Y +C X +C Y +A X +B Z +A X +A Y +B Z +C Y +B Z +B Z +C Y +A Y +A Z +C X +C Y +C Y +C X +C Z +C Y +B Z +C Z +B X +C Z +B Z +A Z +B X +C X +C X +B X +B Z +C X +C X +B X +A Z +A X +A Z +B Z +B Z +B Z +A X +C Y +C Y +B Z +A X +A X +B Y +C Y +B X +C X +C Y +C X +C Y +A X +B X +A Z +A Y +B Y +A Z +B X +B Z +B Z +A Y +B X +C Y +B X +B Z +B Y +A X +A Z +C X +C X +C Z +C Z +B X +C X +B X +C X +B X +B Z +B Z +B X +B Y +C Y +A Z +B Y +A Z +C Y +B Z +C Z +C Z +B Y +B X +B X +C X +A Y +A Z +B Y +A Z +A Z +A X +A Z +B Y +A X +A X +C Z +C X +C X +C X +C Z +A Z +C Z +B Y +B Z +A X +B Z +C Z +C X +C Y +C X +A Z +C Y +C Y +C Y +B X +C Y +A Y +C Y +C X +A Z +A X +B Z +C Z +C X +A X +B Y +C Y +B Z +B Z +B Z +C Z +A Z +C Y +C X +C Z +C X +B Z +B Z +A X +B Z +A Z +A Z +B X +C Y +C Y +A X +B X +B Y +A X +C Y +A Z +C Y +C Y +B X +B X +B Z +B X +A Y +C Y +C Y +C Z +B X +A Y +A X +A X +C Y +C Z +C Y +A X +C Y +A X +B Y +B X +A X +C X +C X +A X +A Z +A X +C Y +B Y +B Z +B Y +C Z +A Z +B Y +A Z +A X +C X +B Z +C Z +B X +B Z +A Z +B Z +C X +B Z +B X +B Y +C Z +B Y +C Y +C X +C X +C Y +A Z +B Z +B X +B Z +B X +C Z +A X +A X +A X +B Y +B Y +B Z +A X +B Z +A X +A Z +B Z +B X +B X +A Z +A X +B Z +C Z +C Z +C Z +B Z +C Y +C X +C X +B Z +C Z +B Z +C Y +C X +B Z +C Z +B Z +B Z +B Z +C X +C X +B Y +B Z +B Z +C X +C Y +A X +A Z +C Z +C Z +C X +C Y +A Z +C Z +B Z +B Z +C Y +C X +B X +B Z +A Z +B Z +C Y +A X +B X +A X +C Z +C Y +C X +C X +B Z +C Z +B Z +C Z +C Z +A X +B Z +B Y +B Z +C X +B Z +A Z +C X +A X +B Z +C Z +C X +A X +C Z +A Y +B Z +C Z +C Y +A Z +B X +C Z +A X +A Y +C X +C Z +B Z +C X +A Z +B Z +C Z +C Z +A Y +C Y +C X +A Y +B Z +A Y +C X +C X +C Z +B X +B Z +C Y +A X +A Z +B Z +B Z +C Z +B Z +A X +A Y +B Y +A Z +B Z +B Z +C X +A Y +C Y +B Z +C X +B Y +B X +C Y +C X +B Z +B Z +B Z +C Y +B X +A X +B Z +C X +C Z +C X +A Z +B Z +C Y +B Z +A X +A X +B Z +C Z +C Z +B X +A Z +C Z +C X +B X +C Y +B Z +A X +C X +A Z +C Z +B X +B Z +A X +A X +B Z +C Y +C X +A Y +C X +C X +A X +A Z +B Y +C Z +C Z +C X +A Y +C X +B X +C X +B Y +C Y +B Z +A Z +C Z +A Y +A Z +B Y +C X +B Z +C X +C Y +C Z +B X +A X +C X +A Z +B Z +A Y +C Y +B Z +C X +C X +C X +B Y +C Y +B X +C X +A Z +A Y +A Z +C X +C Z +C X +C Z +B Y +A Z +B Z +C Z +B Z +B Z +C X +B Z +A Z +C Z +C Z +C X +A Y +B X +B Z +A Z +B Z +A X +B Z +C Y +C X +C X +A X +C X +B X +C Y +C X +B Z +B Z +C X +B Y +C Y +B Y +B X +C X +B X +B Z +B Z +C Y +A X +A X +A Z +A Y +C X +B Y +B Y +A Y +C Z +B X +B Z +B Z +C X +C Y +B Z +C Y +C Z +C X +C Z +A Z +B Y +A Z +B Z +C Y +C X +C Y +B Z +B Z +C X +C X +B Z +A X +A Z +C Y +B Y +A Y +B X +B X +A Z +B Z +B Z +A Z +A Z +C X +C X +C Y +C Z +A Y +C Y +B X +B Z +C X +B Z +C Z +B Z +C X +B Z +B X +A Y +B Z +C X +C Y +B Z +C X +C Y +C X +C X +A X +C X +C Y +A Z +B Z +C X +C Y +C Y +A Z +B Z +C X +C X +B X +A X +C X +C Y +B Z +C X +C X +C X +C Z +C Z +B Z +B Z +C Z +C Z +C X +A Z +C Y +C Y +C X +C Z +C Y +A Z +A Z +A Z +C Y +C Y +B X +B Z +B Y +C Z +A Z +C Z +C Y +C Z +A Y +A Y +B X +B Z +B X +A X +B X +C Z +C X +B Z +C Z +C Z +B Z +C X +C X +A X +C Z +C Y +A Z +A Z +C Z +A Y +B Y +B Z +C Z +A Z +A X +C Y +B Z +A X +B Z +B Z +A Z +A X +A Z +C Z +C X +B X +C Y +B Z +B X +C Y +C Y +B Z +C X +C Y +C Z +A Z +B X +C Y +A Z +C X +B Y +B Y +C Y +B Z +B Z +A X +C X +B Z +C X +B Z +B Y +C Y +B X +C Z +B Z +C Z +B Z +B Y +C X +C Z +C Z +C Y +B X +B Z +C Y +B Z +C Z +B Z +B Z +B Y +C X +C Y +C X +C X +A Z +C Y +C Y +C Z +A X +C X +B Y +B X +A Y +C X +B Z +C Y +C Y +B Z +B Y +B Z +C Y +C Y +C Y +C X +C X +A Z +C Y +C X +C X +A Y +C Y +B Z +A X +A X +C X +B Z +C Y +C Z +B Z +B Z +C Z +C Y +B Z +B X +C Z +B Z +C Y +C Z +B X +A Y +A Z +B X +C Z +C Y +A X +B Z +A X +B Z +B X +C Z +C Y +C X +A Z +C Y +C Y +A Z +A X +C Y +A X +A X +A X +B Z +C Y +B Z +B Z +B Z +C X +B Z +A X +B Y +C Y +C X +C X +C Y +C Y +A X +A X +C Y +C Z +B X +C Y +A X +C X +C X +C Y +B Z +B Z +A Y +B Z +C Y +C Y +C Y +B Z +C Z +C X +C X +B Z +C X +B X +B Z +B Y +C X +C Y +A X +B Z +B Z +C X +B Z +B X +B Z +C Y +B Z +C Y +C X +B Z +B Y +A Y +A X +A Z +A Z +B Y +A X +A X +C Y +C Y +A X +B Z +C X +A Z +B Z +B Z +A Y +C X +B Z +A Y +C Z +C Y +B X +C Z +C Z +C X +C Y +C X +C Y +B Z +B Z +B Z +B Z +A X +C Z +B Z +A Z +A X +A X +C X +C Y +C X +C X +C Z +C X +A Y +B Z +C X +A Z +B Z +C Y +B Z +A Z +A X +C X +A Z +C Z +A X +C Z +C Y +C Y +A X +C X +B Y +C Y +C Y +A Z +B Z +A Z +C Z +A Z +C Y +A X +C X +C Y +C Y +B Y +B Z +A Z +C X +B Y +A X +C Y +A Y +C Z +A Z +C Z +A X +B X +A Z +A Y +C X +A X +B Z +B Y +C Y +B Y +C X +B Z +C X +C Y +B Z +B X +B X +A X +C X +C Z +A X +B Z +C X +C X +C Z +B Y +A Z +A X +C Y +C Z +B Z +C X +B Y +B X +C X +C Z +C Y +B Z +A Z +B X +B Z +C X +C Y +C X +C X +B Z +B Z +B Z +B Z +B Z +C X +A Y +C Z +C Y +C X +C X +A Z +B Z +C Y +C Z +B X +B X +C Z +B Z +C Z +B X +B Z +C Z +C Y +B Z +A X +A X +C Y +C Z +C X +C X +A Z +C Z +C Z +B Z +C Z +B X +C X +A X +C X +B X +C Z +C X +A X +C Y +B Z +B X +C X +C X +C Z +B X +B Z +B Z +A Z +B Z +B X +A Z +C Y +B Z +C Z +C X +C Z +B Y +C Y +A X +B Y +B Z +C Z +B X +C Z +C Y +B Z +B Z +B Z +B Z +A X +B X +B Z +B Y +B Y +B Z +A Z +B Z +B Z +B X +B X +C X +B X +A Z +B Z +A Y +C X +B Y +A X +B Z +A X +B Z +C Y +C X +B Z +C Y +A Y +A X +C Z +B X +A Y +B Z +C Y +A X +C Z +C Y +C Z +A Z +B Y +A Z +C Y +C Y +A Y +A Z +C Y +C X +C X +C X +C Z +A Y +C X +C Y +A Z +B Y +B Y +B Z +A Z +B Z +A Y +B X +A Z +B Z +B Y +C Z +A Y +B X +A Z +B Y +B Z +B Z +B Z +B Z +B Z +A X +C Z +C Y +B Z +C X +A X +B Y +A Y +B Z +C Z +C X +C Y +B Z +B Z +C Z +B Z +B X +A X +A X +C X +B X +A Z +B X +C X +C Y +C Y +B Z +A Y +B Z +C Z +C Y +B Y +B Z +C Y +C Y +A Z +A X +A Y +C Z +A Y +C X +B Z +C Y +B Z +B Z +A Z +B Y +C X +B X +C X +B X +A Z +C X +C X +B Z +B X +C X +A X +C X +B Z +C Y +C X +B Z +A Z +B Y +A Z +B X +B X +A Z +B X +C Z +B Z +C Z +B Z +B X +A Z +C X +C X +C X +C Z +C X +C X +A Z +B Z +C Y +A Y +B X +C X +B Z +B X +C X +C Z +C Z +B Z +B Z +B X +C Y +A X +A X +B Z +B Z +B Z +C Z +B Z +C Z +A Y +A Y +B Y +C X +C Z +B Z +B Z +C X +B Z +B X +A Z +C X +B X +A Y +C Y +B Z +C Y +C Z +C Y +C Z +B Z +A X +C Z +B Z +B Z +A X +C X +C Y +C Y +C Y +C Y +B Z +B Z +B Z +C Z +A X +B Z +C Z +B Z +B X +C Z +B Z +C X +C Z +C X +B X +B Z +C X +A Z +B Z +B Y +C Y +B Z +C Z +C Z +C Z +C Y +B Z +B Z +B X +B Z +C Z +C Y +B X +B Z +C X +C Y +B X +C Y +C X +B Z +A Z +C X +A X +C X +A X +A X +B Z +B Z +A Y +B Z +A Z +C X +A Z +B Z +B Z +A Z +A X +B Z +B X +C X +B Z +C X +B X +A X +C Y +C Z +C Z +B Z +A Z +A Z +B Z +C X +B Y +C X +C Y +A Z +C X +C X +B Z +C Y +C Y +C X +B X +C Z +A X +A Y +B X +B Z +B Y +B X +C Y +C Z +B Z +B X +A X +C X +A X +A Z +B Z +B Y +B X +B Y +C Z +C X +C X +C Y +A Y +C Z +C Z +C Z +B X +C Y +C X +A Z +B X +C Y +C Y +A Z +C Z +C X +C X +A X +C X +B Z +B X +A Z +C X +B Z +B Z +B Z +B Z +A X +A Z +B X +B Z +B X +B Y +B X +B Z +A Y +C X +C Z +A Z +C X +C Y +A X +A Z +B X +B Y +C Y +C X +A X +C Z +C X +B Z +A X +B Z +A Y +A X +C Y +C X +C Y +A X +C Y +C Y +C Y +C Z +A X +A X +B Z +C X +B Z +B Z +B Z +C X +C X +B Z +B X +A X +A Z +A Y +C X +A X +A Z +B Z +B Z +C Y +A X +B Z +C Y +A X +A Z +C Y +A Z +C Z +C Z +C Y +C Z +A X +C Y +A Y +A X +A X +B X +A Z +C X +B X +C Y +C X +B Z +B Z +B Z +B Y +B Y +C Y +A X +B Z +A Z +C X +B X +A Z +C X +C Y +C Y +B Z +B Z +A Z +B Y +B Z +B Z +C X +B Y +B Z +B Z +C X +C Y +C Z +A Z +C Y +A X +C X +B Y +B Z +A Y +A X +B Z +B X +C X +A Z +C X +C Y +B X +C Y +C X +A Y +B Z +B Z +C Z +B Z +C Y +C X +C X +B Y +C Z +C X +C Y +A Z +C Y +A Z +A Y +A X +C Y +B Z +A Z +C X +C X +C X +C X +C X +B Z +A Y +A X +A Z +C Y +A Y +B Z +B Z +C X +A X +A X +C X +C X +C X +B X +A X +B Z +B Z +B X +B Z +A Y +C Z +C Y +B X +B X +B Z +A X +A X +B Z +B Z +C X +A X +C X +A Z +A X +C Z +A Z +C Z +B Z +A X +B Y +C Z +A Z +A Z +C X +A Z +B X +B Y +B Z +C X +B X +C X +B Z +B X +C Y +C X +C X +C Y +B Z +A Z +B X +C X +C Y +A Y +C X +A X +B Z +C Y +C Y +C Y +B Z +C Y +B Z +C X +B Z +B Z +A Y +C X +B X +C Z +B Z +B Z +A X +B Y +A X +B Z +C Z +B Z +C Z +A Z +C X +B Z +C X +B Z +C X +B Z +B Z +C X +B X +B Z +A Z +C X +C Y +B X +C Y +C Y +C X +B Z +C X +C X +A X +B Z +C Y +C Y +B Z +B Z +C Z +C X +C Y +B Z +A X +C Y +C Z +B Z +B X +C Y +A Z +C Z +C X +C Y +C X +C Z +A X +B X +C Y +C X +C Y +C X +C X +C Z +C X +C Z +B Z +C X +C X +A Z +C Z +C X +C X +B Z +C Y +B Z +C Y +C X +A X +C Z +C Z +A Z +B X +C Y +A Z +B Y +C Y +B X +C Y +B Z +B Y +B Z +C Z +B Z +C X +C Z +A Y +B Z +B Z +B Y +B X +B Z +C Z +C X +C Y +A Z +C X +C X +C Z +B X +B Z +C X +A Z +A Z +B Y +C X +C X +A X +C X +C X +A Z +B Z +C X +B Z +C X +C Y +B Z +C X +A X +B Z +C X +C Y +A X +C Z +B Z +B Z +C Y +C X +A Y +C Y +C X +C Y +A Z +B Z +A Y +B Y +C Y +A X +A X +C X +B Z +A Z +A X +B Y +B X +C X +B X +C X +C Z +B Y +C Y +C Z +B Z +B Y +A Z +B X +A Z +C X +A X +A X +B Z +B Z +A Y +C X +B Y +C Z +B Z +C X +A X +C X +C Z +A X +C X +C Z +C Z +C X +A X +A X +C Z +A Y +C Z +B Y +C X +C Z +A X +C Z +B Z +C Z +A Z +B Z +C Z +A Y +A Z +B Y +B X +A Y +C X +C Y +B X +B Z +C Z +B Z +C Z +C Z +A X +A Y +C X +B Z +A X +A Y +C Z +C Y +C Y +B Z +C X +B Z +B Z +A Y +B Z +B Z +B Z +B Z +B Z +B Z +B Z +C X +B X +B Z +A X +A X +C X +A Y +C X +C X +C Y +B Z +B X +C Y +A Y +A Y +C X +A Z +B Z +C X +C Z +C X +A Z +B Z +B Z +B X +B Z +C Y +A Y +C X +C X +A Z +B X +B Z +B Z +B X +C Y +C Y +A X +A Z +B Z +B Z +C X +B Y +A X +A X +C X +C Y +C Y +B Y +C X +C X +C X +A X +B Z +A Z +B X +B Z +B Z +A Z +C X +A X +B Z +B Z +C Y +C Y +B Z +C X +B X +C X +B Y +C Y +C X +C X +B Z +A X +A Z +B Z +A X +C X +A Z +C X +A Y +C Y +C Y +A X +C X +C X +C Z +B X +B Z +A Y +B Z +A Y +A X +C X +B Z +C X +C Z +C X +B Z +B Z +B Z +C Z +B Z +A Z +A Z +C Y +C Z +B X +A Y +A Z +A Z +B X +A Z +C Y +B Z +C X +C Y +B Z +A Z +C X +B Z +C X +A Y +B X +C Z +B Z +C X +A Z +B X +B Z +B Z +A Y +B X +A Z +C X +B Y +B Z +C X +C Z +B X +B Z +C X +A X +A Z +A Z +B Z +B Z +C X +B Z +C Z +B Z +C X +C Y +C Z +B Z +B Z +C X +B Y +A X +B X +A X +B Z +B Z +C X +A Z +A Z +A Z +A X +C X +B Z +A Z +C Y +C Z +A Z +C X +A Y +C Y +C Z +C Z +B Z +A X +A Y +C X +A Y +C X +A X +B Z +C Y +A X +B Z +A X +A Y +C X +A X +C Y +B X +B Z +A Z +B Z +A X +C Y +A Y +A Z +A Z +C Z +B Z +B Y +C Y +C X +B Z +A X +A X +C X +C Y +C X +A X +C Z +C X +B X +C X +A X +C X +B Z +A Z +A Z +C Z +C Z +A Z +A X +C Y +C X +B Z +C Y +C X +A Z +C Z +A Z +A Z +C Z +B Z +C X +A Z +B X +C Y +A Z +A X +A Z +A Z +A Z +A Z +C X +C Y +B X +B Z +A X +C Z +C Z +A Z +C X +C Z +B Z +A Z +C Z +C Y +A X +B Z +A Y +A Z +A Z +C Z +B Z +C Y +C X +A Y +A Y +B X +C Y +C X +B Z +C Z +C X +B Y +C X +C X +C Z +C Z +B Z +C Z +A Z +C Y +B Z +C Z +C Z +A Z +B Z +C Y +C Z +A X +B Z +B Z +A Y +B Z +C X +A Z +B X +B Z +C Z +B X +B Z +B Z +A X +A Y +A Z +B Z +B Z +A Z +A Y +B X +C Y +C Y +C Y +A Y +B Z +B X +A Z +A Z +C Y +C X +A Z +A Z +C Y +A Z +C X +C Z +B X +B Z +A X +C Z +A Z +C Y +B Z +A Z +C X +C X +B Z +C Z +B X +B X +A Z +B X +B X +C Y +A X +C Y +C X +C Y +C X +C Z +B X +B X +C X +A Z +B X +B Z +C Z +C Y +C Y +C X +B Z +C Y +B Z +C Y +C Y +B Z +A Z +A X +C Z +A Z +A X +C Y +B X +C Y +A Y +B Z +A Z +A X +C X +C X +A Y +C Z +C X +A X +C Y +B Z +B X +A Y +B Z +C X +C X +B Z +A X +C X +A Z +C Y +A Z +A Z +A X +C Z +B X +A Y +C Z +A Y +C Y +A X +A Z +A Z +A X +B Z diff --git a/day2/src/main.rs b/day2/src/main.rs new file mode 100644 index 0000000..2818dd0 --- /dev/null +++ b/day2/src/main.rs @@ -0,0 +1,80 @@ +use std::error::Error; +use std::fs; + +#[derive(Debug, Copy, Clone)] +enum Shape { + Rock, + Paper, + Scissors, +} +use Shape::*; + +impl From for Shape { + fn from(c: char) -> Self { + match c { + 'A' | 'X' => Rock, + 'B' | 'Y' => Paper, + 'C' | 'Z' => Scissors, + _ => panic!("Invalid char: {}", c), + } + } +} + +impl Shape { + fn get_score(&self) -> u32 { + match self { + Rock => 1, + Paper => 2, + Scissors => 3, + } + } +} + +fn get_outcome_score(them: Shape, you: Shape) -> u32 { + match (them, you) { + // Loss + (Rock, Scissors) | (Paper, Rock) | (Scissors, Paper) => 0, + + // Tie + (Rock, Rock) | (Paper, Paper) | (Scissors, Scissors) => 3, + + // Win + (Rock, Paper) | (Paper, Scissors) | (Scissors, Rock) => 6, + } +} + +fn get_round_score(them: char, you: char) -> u32 { + let them = Shape::from(them); + let you = Shape::from(you); + + let shape_score = you.get_score(); + let outcome_score = get_outcome_score(them, you); + + shape_score + outcome_score +} + +fn get_scores(lines: Vec<&str>) -> Vec { + lines + .into_iter() + .map(|line| { + // This is trying to be too clever + let [them, _, you]: [char; 3] = line.chars().collect::>().try_into().unwrap(); + + get_round_score(them, you) + }) + .collect() +} + +fn main() -> Result<(), Box> { + let file_str = fs::read_to_string("input.txt")?; + let lines: Vec<&str> = file_str.lines().collect(); + let scores = get_scores(lines); + let total = scores + .into_iter() + .reduce(|accum, item| accum + item) + .unwrap(); + + println!("Part 1: Final score: {}", total); + + Ok(()) +}