diff --git a/input/02.txt b/input/02.txt new file mode 100644 index 0000000..4dc000a --- /dev/null +++ b/input/02.txt @@ -0,0 +1,2500 @@ +A Y +B X +B X +C Y +B X +A Z +B X +B X +C Z +A Z +C Z +A X +A Y +A Y +B X +C Y +B Z +A X +B X +C Y +C Y +A Y +A Y +C Y +B X +B X +B X +A X +B X +B X +C Y +C Y +B X +A Z +A Z +B X +A Z +C Y +B X +B X +B X +B X +B X +B Z +A Z +B X +A Z +A X +B X +A Z +B X +C Y +A Z +A Z +B X +B X +B Z +C Y +A Y +B Z +A Z +C Z +B X +C Y +C Y +B Z +B X +B X +B Z +B X +B X +A Y +A Z +B Z +B X +B Y +B Z +B X +C X +B Z +B X +A Z +B Z +B Z +B X +A Y +A Z +A Y +B X +B Z +B X +B X +A Y +A Y +B X +B X +B X +C X +C Y +B X +B X +B Z +B X +B X +B X +C Y +B X +C Y +A Z +B X +B Z +B X +C Y +C Y +A Z +A Y +C Y +B X +B X +B Z +A Y +B X +B X +B X +A Y +B Z +B X +A Y +B Z +C Y +A X +B X +B X +A Z +C Y +B X +B Z +A Y +A Y +C Y +A Y +C Y +B X +B Z +B X +C Y +A Y +B X +C Z +A Z +C Y +B X +B Z +B X +B X +B Z +B Y +A Y +B X +A Y +A Z +A Z +B X +C Y +B Z +A X +A Y +B X +A Z +B X +A Y +B Y +B X +A Y +B X +B X +B X +B X +B X +B X +B X +A Z +B X +B X +B Z +B Z +B Z +B Z +A Y +B Z +C Z +B X +B X +B X +A Z +B Z +C Y +B X +C Y +B Z +B X +B Z +B X +C Z +A Z +A Y +A X +B X +B Z +A Y +B X +B X +B X +B X +C Y +C Y +A Z +A Y +A X +B X +B X +A Y +B X +C Y +A X +B X +B X +B X +A Z +C Y +B Z +C Y +A Y +C Y +A X +A Z +C Z +A Z +B X +B Z +B X +B X +A X +B X +B X +B Z +A Y +C Y +A Z +C Z +A Z +A Z +A Z +B Z +B Z +B Z +C Z +B Y +C Y +C Y +C X +B X +C Y +B X +B X +C Y +B Z +B X +C Z +B X +A Z +B Z +C X +C Y +B X +A Y +A Z +B X +A Z +A Z +B X +B X +C Z +B Z +A Z +A Z +C Z +B X +A Z +A X +B X +B X +C Y +B X +B Z +A Z +B X +B X +B X +B X +B X +B X +B X +B X +C Y +C Y +B X +B X +B X +C Y +A X +B Z +B X +B X +C Z +B X +B Z +B Z +A Z +B X +B Z +B X +A Z +B X +B X +B X +B X +B X +C Z +B X +B X +B X +B Z +C Y +C Y +A Y +B X +B Z +C Y +B X +B X +C Y +C Y +B X +B X +B X +B X +C X +B Z +B X +B Z +C Y +A X +A Z +B X +B X +A Z +B X +C Z +B X +A Y +A Z +B X +B X +B X +B Z +B X +A Y +C Y +B Z +B Z +C Y +B X +A Y +C Y +B X +C Z +B X +B X +A Z +B Z +B Z +B X +A Z +A Z +A Y +B Z +B X +B X +B X +B X +B Z +B X +B Z +B X +A Z +B X +B X +C Z +C Z +B X +C Y +A Z +B X +B Z +C Z +C X +B X +A Y +A Y +B X +B X +C Y +A X +C Y +A Y +A Z +C Z +B Z +A Z +B X +B X +B Z +C Y +A Y +A Y +B Z +A Z +A Z +B Z +A Z +B X +A Y +A Y +C Y +B X +B X +A X +B X +C X +A Y +A Z +B X +B X +B X +B X +B X +B Z +B Z +B Z +B X +B X +A Z +B X +C Z +A Z +C Y +B Z +C Y +A Y +C Y +B X +B X +B X +A Y +B Z +B Z +B X +B Z +B X +B X +B X +C Y +B X +B Z +A Z +B X +B X +B X +C Z +C Z +B Z +B X +A Z +A X +B X +B X +B Y +A Y +B X +B X +C Z +A Z +B X +B Z +B Z +A Y +A Z +B Z +B Z +A Y +A Y +A Z +C Y +C Y +B X +B X +A Z +B X +C Y +C X +A Z +B X +B X +B X +A Y +C Y +B Y +C Y +C X +A X +A Y +B Z +B X +B Z +A X +B X +C Z +B X +B X +A Y +B Z +B X +A Y +A Y +B X +C Y +B X +B X +C Y +B X +C Z +B Z +B X +A X +C Y +C Y +B X +B Z +B X +B X +A Z +B X +A Z +B Z +B X +B X +B Z +A Y +C Y +B Z +B X +A Y +B X +A X +C Z +B X +B Z +B Z +A X +C Y +A Z +B X +B Z +A Y +B X +C Y +A Y +B Z +C Y +B X +B X +B X +B X +B X +B X +C Y +B X +C Z +A Y +C Y +B X +C Y +B Z +B X +A X +B Z +B X +C X +B X +A Z +B X +A Y +B X +C Z +B X +B Z +A Y +B X +A Z +A Z +A Z +A Y +A Y +B X +A Z +B X +B X +A Y +A Y +A Y +B Z +C Y +B Z +B X +C Z +A Y +C Y +B X +B X +B Z +B X +B X +B X +C Y +C Y +A Y +B Z +B Z +B X +B X +B Z +B X +A Y +C Y +B X +C X +B Z +B X +B Z +B Z +C Y +B Z +B X +C X +B X +C Y +B X +A Z +B X +B X +B X +B X +B X +C Y +A Y +B X +C Y +B Z +B Z +B X +C X +B Z +C Y +C X +C Y +A Z +B Z +C Y +C X +B X +A Y +C Y +B X +C Z +B Z +A Y +C Z +C X +B X +B X +A Y +C X +B X +B X +A X +A Z +A X +A Y +A Y +C Y +B X +C Z +B X +C Y +A Y +B X +B X +B X +B X +A Z +C X +B X +B Z +B X +B X +C Y +B X +C Z +B X +B X +B X +B X +B X +C Y +B X +B X +A Y +B X +C Y +C Y +A Y +B X +A X +A Y +B X +B Z +B X +B Z +A X +A Y +A X +B X +C Z +A Y +B Z +A Y +B Z +B Z +B X +B Z +B X +B X +B X +B Z +B X +B X +B X +A Z +C Z +C Z +A X +A X +B X +B X +A X +B X +A X +A Z +B Z +B X +C Y +B X +C Y +A Y +C X +A X +A Y +B Z +B X +B X +C Z +B Y +A Y +B Y +C Y +A Y +B X +B X +C X +B Z +A Y +B Z +A Z +B X +B X +A Z +C Z +A Y +B X +B X +B Z +B X +B X +B Z +A X +A Z +C Y +A Y +A Z +B X +C Y +B Z +C Y +B X +B X +B Z +B X +A Y +B X +A Y +B X +A Y +B X +A Y +C Y +A Y +B Z +A Y +B X +A Z +C Y +B X +B X +B X +A X +B X +B Z +A Z +A Z +B X +B Z +B X +A Y +B Z +B X +B X +A Y +A Y +C Z +C Y +B X +A X +A Y +A X +C Y +B X +C X +B X +B X +A Y +A Y +A Y +B Y +B X +B X +B X +C Z +B Z +C Z +A X +B X +B X +A Y +A Z +B X +A Y +B Z +B Z +C Y +B X +B X +C X +B X +C X +B X +B Z +A X +B X +A Z +A X +B Z +A Y +B X +B X +B X +B X +B Z +A Z +B X +B Z +B X +B Z +C Y +B X +C Y +B X +B X +B X +A Y +B X +A Y +B X +B X +A X +C Z +C Y +A Z +B X +A Y +C Z +C Y +C Y +B Z +A Y +B X +A Y +B X +B X +B Z +B Z +B X +C X +B Z +A X +A Y +A Y +B Z +A Z +C Y +B X +B Z +A Y +C Y +A Y +A X +A Z +B X +B X +C Y +B X +C Y +B X +A X +B Z +C X +B Y +A Y +C Y +B X +A X +B X +B X +B X +A Z +A Y +B X +C Z +B X +C X +C Z +B X +B X +C Y +B X +B Z +A Y +A Y +B X +B X +B Z +C Y +B X +B X +B X +A Y +C Y +B X +A Y +A Z +C Y +B X +A Y +A Z +B Z +A Z +B X +C X +B Z +A Y +B Z +A Y +C Y +A X +A Y +B X +C Y +C Y +B X +A X +B Z +B X +B X +A Z +A Z +A Y +A Y +B X +B X +B X +A X +B X +B X +B X +A X +B Z +C Z +A Y +C Y +C Y +C X +B X +B Z +B Z +B X +B X +C Y +A X +C Y +A X +B X +B X +B Z +B Z +C Y +C Y +A Z +C Y +A Z +B X +A Z +A Y +B Z +B Z +B X +B X +A Y +B Z +B X +C Z +A Z +B Z +B X +B Z +B X +C Y +B X +A Y +B Z +C Y +B Z +C Z +B X +C Z +B X +B X +B X +C Y +B X +B X +B Z +A Y +B X +B Z +A Z +B X +C Y +C X +C Y +A Z +B X +A Z +B X +C Z +A Y +B Z +B Z +A Y +C Z +C X +A Y +B X +B Z +B X +B X +B X +B X +A X +B X +B X +A Z +B X +B X +A Z +C Y +A X +B Z +B X +B X +A Z +B X +A Y +B Z +C Y +B X +A Y +C Y +B Z +B X +A Z +A Z +B X +B X +B Z +B X +B X +A Z +B X +B Z +B Z +C Y +A Z +B X +A Y +B X +B X +B X +B Z +A X +C Y +B Z +B X +B X +B X +B X +B X +B Z +B X +B Z +A Z +B Z +B X +C Z +B Z +C Z +A Z +C X +A Y +B Z +B Z +B X +B Z +B Z +A Z +C Z +A X +C Y +C Y +A Y +A X +A Z +B X +A Y +B X +B X +C Y +C Y +B X +B Z +A Y +B X +B Z +B X +B X +A Z +C Y +B X +C Y +A Y +B Z +A Z +A Y +B X +A Z +B Z +B X +A Y +A Y +A Z +A X +B Z +C Z +B X +C Z +B X +B Z +A X +B X +B X +B X +B X +C Y +B X +A X +B Z +A Y +B X +A Z +B X +B Z +A Y +A Y +A Y +A Y +A Z +C Y +C Z +B X +B Z +A Y +B X +B X +B X +A Y +B Z +B X +B Z +B X +B X +B X +C Y +C Y +C X +B X +A Y +A Y +C Z +A Y +A Y +C X +A Z +B X +B X +B X +B X +C Y +A Y +B Z +A Z +B X +C X +A Z +B X +C Y +B X +B X +C Y +B X +B X +B X +A Y +B X +B X +C Z +B X +C Y +C Y +B X +A Z +B X +B X +C Y +A Y +B X +B Z +B X +B X +B X +C Y +C Z +B Z +C Y +B X +B Z +B X +B X +B X +C Y +C X +B X +A Y +A Z +B Z +A Y +B X +B X +B Y +C Y +C X +B Z +A Z +B X +B X +A Y +C Z +C Y +B X +C Y +A Z +A Y +B Z +B X +B X +B X +B X +A Z +A X +A X +A X +C Y +B Z +B X +C Y +B X +B X +A Z +C Z +C Z +B X +A Y +B X +B Z +B X +A Y +A Y +A Z +C Y +A Y +A Z +A Y +A Y +B X +A Y +B X +A Z +A Z +C Y +B X +B X +C Y +B X +B X +B X +C Y +A Y +B X +A Y +B Z +C Y +B X +A Y +B Z +A Z +B Z +A Z +B X +C Y +B X +B X +B X +C Y +A Y +B X +A Y +C X +A Z +B X +B Y +B X +B X +A Z +B X +B X +B Z +B X +C Y +B X +B X +B Z +B X +C Y +B X +C Y +B X +B Z +A Y +B X +B X +C Z +B X +C Y +A Y +C Y +B X +B Z +B X +B X +B X +B X +A Y +B X +A Z +A Y +A X +C Y +B X +C Y +B X +A Z +C Y +C Y +B Z +B X +A Y +B Z +A Y +A Y +B Z +B Z +B X +C Y +C Y +B X +A X +A Z +B X +C Y +B X +B X +B Z +B X +B Z +C Y +C Z +C Y +A Y +A Z +B X +C Y +A Y +C X +B X +B X +A Y +B X +B X +B X +B Z +B Y +A X +A Y +C Y +C Y +A Y +C Y +B Z +B Z +C Y +B X +C Y +C Z +A Y +C X +A Y +A Y +C Y +C Y +B X +A Y +A X +B X +B X +B Z +B X +A Z +A Y +A Y +B X +B X +B Z +B Z +B X +B Z +A Z +A Y +A Z +B X +C Y +B Z +B X +A Y +B X +C X +B X +B X +C Y +B X +B X +B X +A Y +A X +A Y +B X +B X +A Y +A Y +A Z +A Z +C X +C Y +A Z +C Y +B Z +B X +A Y +B X +B Z +C Z +A Y +A Z +A Y +B X +B Z +B X +A X +B Z +B X +C Y +B X +A Z +C Z +A X +B X +B X +A Y +C Y +B X +B X +B X +B X +B X +A X +B X +A Z +C Z +B Z +B X +C X +A X +C Y +A Y +A Z +B X +A X +A Z +A Z +B X +B X +A Z +C Y +A Z +B X +C Y +B X +C Z +C Y +C X +A Z +C X +B Z +B X +B X +C Y +B X +C Y +A Z +A Z +A Z +A Y +A Z +B X +B X +B X +B Z +C Y +C Z +C Y +C Y +C Y +A Y +B Z +A X +B X +B X +B X +A X +A Y +B X +B Z +A Z +A Y +A Y +B Z +B X +B X +C Y +C Y +C Y +B X +C Y +B X +B X +B X +C Y +A Y +A Y +C Z +C Y +B X +A X +A Y +B X +C Y +B X +A Y +C Y +A Y +B X +B X +B Z +A Y +B Z +B Z +B X +B X +C X +C Y +B X +B X +A X +C Y +B X +B Z +B X +B X +A Y +B X +B Z +B Z +C Y +B X +B Z +B Z +B Z +B X +B X +A Y +B X +B X +B Z +C Y +A Y +B X +B Z +B X +B X +A X +B X +B X +B X +B Z +B Z +B Z +B X +A Z +B X +A Z +A Y +B Z +B X +A Y +B X +B Z +B X +A Z +B X +B Z +C Z +A X +B X +B X +B X +C Y +B X +B X +A Y +A Z +B X +C Y +B X +C Y +B X +B Y +B X +C Z +B X +C Z +A Y +B X +C Z +B X +A Y +C Y +B X +B X +B Z +C X +B Z +B X +A Z +B X +B X +B X +B Z +B X +A Z +C Y +A Y +B X +B X +A Z +B X +A Y +B X +C Y +B Z +B Z +B X +B Z +B X +B X +B X +B X +B X +C Y +A Z +A Z +B Z +A Y +B Z +C Y +A Y +A Y +C Y +A Y +B Z +A Y +A Y +B X +B X +A X +B X +C Y +C Y +B Z +B X +A Z +B Z +B X +A Z +B Z +A Y +A Y +A Y +A Y +A Z +A Y +B X +B Z +A Y +B X +A Z +B Z +C X +B X +B X +B Z +B Z +B X +B X +B X +B X +B X +B X +B X +B Z +B X +B X +B X +B X +B X +B Z +B X +B X +B Z +B Z +B X +A Y +B Z +B X +A Z +A Y +A Z +B X +B X +A X +B Y +A Z +B X +C Z +A Z +B X +B Z +B X +B X +B X +A Y +C Y +B X +B X +B X +A Y +B X +A Z +B X +B X +B X +B Z +B Z +C X +C Y +B X +B X +C Y +B X +B X +B X +A X +A Z +A Z +B Z +B Z +B X +A Y +B X +C Y +B Z +C Y +C Z +A Y +A Y +B X +B X +A Z +B X +B X +B Z +B X +B X +A Z +B X +B X +B X +C Y +B X +B X +C Y +B X +B X +B Z +B X +B X +A Y +C Y +A X +C Y +B X +B X +A Z +A Y +B X +A X +B Z +A Y +B X +B X +A Y +B X +C X +B X +B X +B Z +B Z +B X +B Z +B X +B X +A Y +A Y +B X +B Z +C Y +B X +B X +B X +A Z +B X +A Y +B X +C Y +A X +A Y +B X +B X +C Y +B X +B X +B X +A Z +B Z +B X +C X +A Z +C Y +B X +B Z +B X +B X +A Z +B X +A Y +C Y +B X +B Z +C X +A Z +A Z +B Z +B Z +A X +B X +A Y +B X +B X +B X +B X +A Z +B Z +B Z +C Y +A X +A Y +A Y +A Z +B X +A Y +B Z +C Y +B Z +B X +A Z +B Z +B X +B Z +B Z +B Z +B X +C Y +B X +B X +A Y +B X +C X +A Y +A Z +A Y +B X +C Y +B Z +B X +B X +A X +B X +B X +A Y +A Z +C Z +A Y +B X +B X +C Y +A X +A Z +B X +B Z +B Z +C Y +A Z +C Y +A Z +C Y +C Y +B Z +C Y +B X +C Y +C Y +B X +B Z +C X +C Y +A Y +B X +C Y +B X +B X +C Y +B Z +B Z +A Z +A Z +C Y +B X +B Z +B X +B X +B X +C Y +B X +C Y +A Z +A Z +B X +B X +A Y +A X +B X +A Z +A Y +C Y +B X +A Y +A Y +B X +A X +A Z +A Y +A Z +C Y +C Y +C Y +A Y +B X +B X +A Y +C Y +B X +A X +C Y +C Y +A Y +C Y +C Y +B Z +C Y +B X +C Y +B X +B X +B X +A Y +B Y +B X +C X +B X +A X +A Y +C Y +C Y +B X +B X +A Y +B X +B X +A Y +C Y +C X +A Y +B X +B Z +B Z +B Z +B X +A Z +B X +B X +A Y +B X +B X +A Y +B Z +A Y +B X +B X +B Z +A Z +A Y +A Z +A Y +C Y +B X +C X +B X +B X +A Z +B X +B Z +B X +A Z +C Y +B X +B X +B Z +A Z +A Y +B X +B Y +A Y +A Z +A Y +C Z +B X +B X +B X +A Z +B X +B X +B X +A Y +B Z +C Y +C Y +A Z +A Z +A Y +B X +A Y +B Z +C Y +B X +B Z +A Y +B X +A Y +C Y +B X +B X +A Y +A Z +A Z +A Z +B X +B X +A Z +B X +B X +B Z +A X +B Z +A Z +B X +C Y +C X +A Z +B X +A Y +B Y +B Z +B X +B X +A Y +B X +A Z +A Z +C X +B X +B Z +A Y +C Y +A Y +B X +B Z +B X +A Z +B Z +C Y +B Z +B X +B X +B X +A Y +B X +B X +A Z +C Y +B X +C Y +B X +C Y +A Z +A Y +A X +C Y +B X +B X +B Z +B X +A Y +A Y +B X +B X +A Z +C Y +B Z +B X +B X +A X +A Y +B Z +C Y +A Z +C Y +A Z +B X +A Y +B X +A Y +B X +B X +C X +B Y +C Z +A Z +C Y +B X +B X +B Z +C Z +A X +A Y +A Z +B X +C Y +B Z +B Z +A Y +B X +B X +A Y +A Z +B X +B X +A Z +B X +B X +B Z +A X +B X +A X +A Y +C Y +B X +B Z +A Y +B X +A X +B X +B X +B Z +B X +B X +A Y +B X +B X +A Y +A Y +C Y +B Z +B X +A X +A Z +B X +B X +C Z +B X +B X +B X +B X +B X +C Y +C Y +C X +B X +B X +B Z +B Z +B X +A Y +B Z +B Z +B Z +B X +B X +B X +B X +A Y +A Y +B X +C Y +C Y +B X +B X +A Y +C Y +A Z +C Y +B X +C Z +B X +B Z +B X +C Y +C Y +B X +B X +B X +C Y +B X +B X +A X +B X +C Y +A Y +B X +B X +B X +C X +C Y +A Y +B X +B X +C Y +A Y +B X +A Y +A Y +B Z +C Y +B Z +A Y +A Z +C Y +B X +C Y +B X +C Y +C Y +B X +B X +B X +B Z +A Y +B X +B X +B X +A Y +B X +B X +A Y +B X +A Y +C Y +A Z +B X +B X +C Y +B X +B X +A Y +A Z +C Y +B X +B Z +B Z +B X +C Y +B X +A Y +C X +C Y +B X +B X +B Z +C Y +B X +B X +C Y +C Y +B X +C Y +B Z +C Y +C X +B Z +C Y +B Z +C Y +A X +B Z +B Z +B X +B X +C Y +B X +C Y +B X +B X +B X +A Y +B X +C Y +B Z +C Y +C Y +A Y +C Z +A Y +B X +A Z +C Z +C Y +B X +B X +A Y +B Z +B X +C Y +B X +B Z +A Z +B Z +A Y +C Y +A Z +B X +B X +C Y +C Y +B X +B X diff --git a/src/bin/02_1.rs b/src/bin/02_1.rs new file mode 100644 index 0000000..89705d4 --- /dev/null +++ b/src/bin/02_1.rs @@ -0,0 +1,38 @@ +use std::fs; + +use anyhow::Result; + + +fn main() -> Result<()> { + let input = fs::read_to_string("input/02.txt")?; + + let score: i32 = input + .split("\n") + .collect::>() + .into_iter() + .filter(|s| *s != "") + .map(|s| s.split(" ")) + .map(|mut s| (s.next().expect(""), s.next().expect(""))) + .map(map_move_to_score) + .sum(); + + println!("{score}"); + + return Ok(()) +} + +// ABC XYZ +fn map_move_to_score(action: (&str, &str)) -> i32 { + return match action { + ("A", "X") => 4, + ("A", "Y") => 8, + ("A", "Z") => 3, + ("B", "X") => 1, + ("B", "Y") => 5, + ("B", "Z") => 9, + ("C", "X") => 7, + ("C", "Y") => 2, + ("C", "Z") => 6, + (_, _) => 0, + }; +} diff --git a/src/bin/02_2.rs b/src/bin/02_2.rs new file mode 100644 index 0000000..29b9965 --- /dev/null +++ b/src/bin/02_2.rs @@ -0,0 +1,38 @@ +use std::fs; + +use anyhow::Result; + + +fn main() -> Result<()> { + let input = fs::read_to_string("input/02.txt")?; + + let score: i32 = input + .split("\n") + .collect::>() + .into_iter() + .filter(|s| *s != "") + .map(|s| s.split(" ")) + .map(|mut s| (s.next().expect(""), s.next().expect(""))) + .map(map_move_to_score) + .sum(); + + println!("{score}"); + + return Ok(()) +} + +// ABC XYZ +fn map_move_to_score(action: (&str, &str)) -> i32 { + return match action { + ("A", "X") => 0 + 3, + ("A", "Y") => 3 + 1, + ("A", "Z") => 6 + 2, + ("B", "X") => 0 + 1, + ("B", "Y") => 3 + 2, + ("B", "Z") => 6 + 3, + ("C", "X") => 0 + 2, + ("C", "Y") => 3 + 3, + ("C", "Z") => 6 + 1, + (_, _) => 0, + }; +}