From 77ee459c88d3b1de513d51ba0e08e30a7663197b Mon Sep 17 00:00:00 2001 From: Aadi Desai <21363892+supleed2@users.noreply.github.com> Date: Wed, 11 Oct 2023 11:36:48 +0100 Subject: [PATCH] Day 2, Part 1 & 2 --- src/bin/d2.rs | 47 + src/input/d2.txt | 2500 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 2547 insertions(+) create mode 100644 src/bin/d2.rs create mode 100644 src/input/d2.txt diff --git a/src/bin/d2.rs b/src/bin/d2.rs new file mode 100644 index 0000000..3d557e1 --- /dev/null +++ b/src/bin/d2.rs @@ -0,0 +1,47 @@ +const INPUT: &str = include_str!("../input/d2.txt"); + +fn main() -> anyhow::Result<()> { + let score_p1 = INPUT + .as_bytes() + .chunks(4) + .map(|l| play_points(l[0] as char, l[2] as char)) + .sum::(); + println!("{score_p1:?}"); + let score_p2 = INPUT + .as_bytes() + .chunks(4) + .map(|l| result_points(l[0] as char, l[2] as char)) + .sum::(); + println!("{score_p2:?}"); + anyhow::Ok(()) +} + +fn play_points(opponent: char, player: char) -> usize { + match (opponent, player) { + ('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, + _ => unreachable!(), + } +} + +fn result_points(opponent: char, result: char) -> usize { + match (opponent, result) { + ('A', 'X') => 3, + ('A', 'Y') => 4, + ('A', 'Z') => 8, + ('B', 'X') => 1, + ('B', 'Y') => 5, + ('B', 'Z') => 9, + ('C', 'X') => 2, + ('C', 'Y') => 6, + ('C', 'Z') => 7, + _ => unreachable!(), + } +} diff --git a/src/input/d2.txt b/src/input/d2.txt new file mode 100644 index 0000000..7b6fba3 --- /dev/null +++ b/src/input/d2.txt @@ -0,0 +1,2500 @@ +B Z +C Z +B X +A Y +B X +B X +A X +B Z +C Z +B Y +A Z +C X +B X +C X +B Z +B Z +C Y +B Z +B Z +C Z +B Z +B Y +B X +B Y +C Z +C Y +C Z +A X +C Z +B X +C Z +B Y +B X +A Y +A X +A Y +B Y +B X +B X +A Z +B Z +B Y +C Z +B X +C Y +B Z +B Y +C Y +A X +A Y +C Y +C Z +B Z +B X +C Z +A X +B X +A Y +B Z +C Y +A Y +C Z +C Z +A X +B X +C Z +A Z +A Z +B X +B X +B X +A Y +B X +B X +C Y +B X +C Z +C Y +B Z +A X +B X +B X +A X +C Y +C Y +A X +A X +B Z +B X +C Z +B X +B Z +A Z +B Z +A X +A X +B Z +A X +B X +B X +B X +A Y +A Y +A Y +B X +C Y +B Z +A Y +B X +A Z +C X +A Z +B Y +B Z +C Z +B Z +A Y +B X +B Z +B Z +B Z +C Y +B X +A Y +B Z +B Y +B Z +B X +A X +A X +B Y +B X +C Y +A Y +A Z +B Z +B Z +B Y +B X +B Z +B X +B Z +B Z +B X +B Z +B Z +B Z +B X +A Y +B X +B Z +A X +B Z +B Z +B X +C Y +A Z +B Z +C Z +B X +A Z +B X +A Z +C Y +C Y +A Y +A Y +B Z +A Y +A Y +C Z +A X +B X +B X +C Y +A Z +B Y +C Y +B Z +B Y +B Z +A X +B Z +C Z +B X +B Y +A X +C Z +B Y +B Z +B Z +A Z +B X +A Y +C Y +C Y +B Z +B Z +B X +B Z +B Z +B Y +B Z +B Z +B Z +B X +B X +B Z +B Y +B Z +C Y +A Z +A Y +B X +A X +B Z +B Z +A Z +B Z +B Z +B X +A Y +C Z +C Y +B Z +B Z +C Z +A X +B Z +B Z +B X +A Y +A Z +B Z +C Y +C Z +A Y +B Z +B X +C Z +A X +C Z +B Z +C Z +B X +C Y +B X +B Z +B X +A Y +A Z +B Z +B X +B Z +C Z +C Z +C Y +B X +B Y +B Z +C Z +C Z +B Z +B X +B Z +C Y +A Y +C Y +B X +C Y +B Y +C X +B X +A Y +C Z +B X +B Z +B Y +B X +B X +A Z +B Z +C Z +B X +B X +A X +B X +B X +C X +C Y +A X +B X +B Z +B X +A Y +B X +B Y +B X +B X +B Y +B X +A Z +B X +B Z +B X +C Z +A Z +C X +B Z +A Y +B X +B X +A Z +A Y +B Z +B Z +A Y +C Z +B X +B X +C Z +B Z +B Z +B Z +A Y +A Y +A X +B X +C X +B X +B Z +B X +A X +B X +B Z +B X +A Y +B X +C Y +B X +B Z +B Z +C Z +C Z +C Y +B Z +B X +B Z +A Y +C Y +B X +C Y +C Z +A X +B Z +A X +B X +C Y +A X +A Y +B X +A Y +A Z +C X +B X +B Y +B Z +B X +A Y +B Z +B X +A X +B X +B X +B Y +B Z +B Z +B X +B X +A X +B Z +B Z +B Z +A Y +C Z +A X +A Y +B Z +B X +C Y +A X +B X +B Z +B Y +A Y +B Z +B Z +B X +A Y +A Y +A Y +C Y +B X +B X +B Z +B Z +A Z +A Y +B Z +B X +B X +B X +A X +B X +C Y +B Z +A Y +B X +A Y +A X +C Y +B Z +C Z +B Z +B X +B Z +A Y +B Z +C Z +B Z +B Z +A X +B Z +B Z +B X +B Z +B Z +B Z +C X +B X +B X +A Y +A Y +B X +B X +C Z +B X +B X +C Y +C Y +C Z +B X +B Z +B Z +B Z +A Y +A Y +A X +C Z +A Z +A X +B Z +C Z +A X +B X +B Y +C Z +B Y +B Z +C Y +C Y +C Y +B Z +B Z +B X +B Z +B Y +B X +B Z +A X +B X +A Y +A X +B Z +A Y +C Z +C X +B X +B X +C Y +B Z +A Y +B Z +B X +C X +B Z +A X +A Y +A Y +C Y +C Z +C Z +B X +A X +B X +B X +B Z +C Y +B X +C Z +C Y +B X +B Z +B X +B X +C Z +A Y +B Z +B X +A X +B Z +B Z +B X +B X +C Z +C Z +B Y +C Z +B Z +C Y +B X +B X +C Y +B X +B X +A Z +B X +B X +A Y +B X +B X +B X +B Z +B Z +C Z +A Y +B X +B Z +B X +B Z +B Z +B X +B Y +C Z +A Z +A Y +C Y +B X +A X +B Y +A X +B Y +A Y +C X +B X +A Y +B Z +B Z +B X +B Z +B Z +B X +B X +A Y +B Z +A Y +B Y +B Y +B Y +B X +B Z +B Z +A Y +A X +C Y +B X +B X +A Y +B X +A Y +B Z +B Z +B Y +B Z +C Z +C Z +C Y +B Z +C Y +A X +B X +C Y +C Z +B X +C Y +A Y +B Z +B Z +A X +C Y +B X +A Y +C Z +B Z +B X +A Y +C Z +A X +A Y +C X +C Y +A Y +B Z +B X +A Z +B Z +B Z +B X +C Z +B X +B Z +B X +B X +B Z +B X +A X +A Y +B Y +A Y +A Y +B Z +C Z +B X +B Z +A Y +A Y +A Z +B X +A Y +A Y +B X +A X +B Y +B Z +B Y +A Z +C Y +B Z +A X +A Z +C Z +B X +B Z +B X +C Y +A X +B Z +A Y +B X +B Z +B X +C Y +B Z +B X +A Y +B X +C Y +C X +A X +B Z +B X +A X +A Z +B X +B Y +A Z +B Z +C Y +A Y +C X +B Z +A Y +C Y +C Z +B Y +C Y +A Z +B Z +B Z +A Y +B X +C X +A Y +A Y +A Z +B X +B X +B Y +A X +B X +B Z +B Z +B X +B Y +C Z +C Y +A Y +A Y +C X +C Z +C Y +C Y +A Y +A Y +B Z +C Y +C Y +A Y +A Y +C Z +B Z +A X +B Y +B Z +B Z +B Z +B Z +B X +A Y +A Y +B Z +A Y +C X +A X +C Z +B Z +B Z +A X +C Y +B Z +B X +B X +B X +B Z +C Y +B Z +B X +B X +B Z +C Y +B X +A Z +B X +B Z +A X +C X +A X +B Z +B Z +B Z +B Z +A Y +B Z +B Y +B Z +B Z +B X +B Z +B Z +A Y +A X +B X +A Z +B Z +A Z +B X +B X +B Z +A Y +B Y +A X +B X +B X +A Y +B X +B X +B Z +B Y +B Z +C Z +B X +C Y +B Z +B Z +C Y +B Z +B Z +B Z +B Z +B Z +C Y +A Y +A X +B Z +C Y +B Y +C Z +B Z +B Z +C Z +B Z +B Z +B X +A Y +B Z +B Z +C Y +A Y +B Z +A Y +B Z +C Z +C Y +A Y +A Z +B X +A X +B Z +B Y +A X +A X +A Y +B X +C Y +B X +B Z +A Y +B X +B X +A Y +A Z +C Z +C Y +A Y +B X +B Z +B X +C Z +A Y +B X +A Y +B Z +B X +C Y +A Y +B Z +C Y +B Y +B X +C Y +A Y +B Z +C Y +B X +A X +B Z +B Z +C Y +A Y +B Z +C Y +B X +A X +A Z +C X +B Z +B Z +C Y +B Y +C Z +C Y +A X +A Y +A X +A Y +C Z +C Y +C Z +C Z +C Y +A X +C Z +B X +C X +B X +A Z +B X +C Z +A Y +A X +A Z +C Z +B X +C Y +A Y +C Y +C Z +C Y +C Y +C X +B Z +B X +B Y +A X +B Z +B Y +C Y +C Y +C Z +A Z +A X +A Y +C Z +B Z +B X +B Z +B Z +B X +B Z +C Y +A X +B X +A Z +B X +C Y +B Z +B X +B Z +C Z +C Z +A X +B Z +B X +A Y +B Z +A Y +B Y +C Z +C Y +A X +A Y +C Y +C Z +B X +C Y +B Z +B Z +B Z +C Z +B X +C Y +B Z +C Z +B X +A Y +A X +B Z +B Z +C Y +B X +B Z +C Y +A Y +C Y +A Y +B X +C Z +A X +A Y +C Y +C Z +B Z +B Z +B Z +A Y +A Y +C Z +A Z +B X +A X +B Z +C Z +B X +C Y +B Z +B X +B Z +B Z +B X +C Z +B X +B Z +B X +A X +B X +A X +B Z +B Z +A Y +B X +B Z +B Z +C Z +C Y +B X +B X +B Y +C Z +C Y +A X +B Z +C Y +A Y +B X +B X +A X +A Y +C X +B Z +B Z +A Y +A X +C Y +B Z +B Z +C X +C Y +A Y +B Z +C Y +B Z +B X +B Z +C Y +B X +B Z +B X +B X +B X +B Z +B Z +C Y +B X +B Z +A Z +A Y +A Z +A Y +B X +C Z +A Y +B X +B X +C Z +B Z +A X +B X +C Y +A Y +A X +B Z +A X +A Y +B Z +B X +B Z +C Y +A X +A X +B X +B Y +C X +A X +B X +B X +A Y +C Y +B Z +B Z +C Z +B X +B Z +B X +B Y +B Z +B Z +B X +B Z +A X +B X +A Y +A Z +B Z +B X +A Y +A X +B Z +B X +C Z +A Y +A Y +C Z +B X +A X +C Y +B X +B Z +B X +B Z +B X +C Y +B Z +C Y +C Z +A Z +C Z +A X +C Z +B Y +B X +B Z +C Z +A Y +A Z +A X +B Z +A X +B Z +B X +A Z +C Z +C Y +B Z +C X +A X +A X +B X +A Y +A X +B Z +B Z +B Z +B Z +A X +A X +A Y +B Z +B Y +B Z +A Y +B Y +A X +A Z +B Z +A Y +B X +A X +A X +B Z +A Z +B Y +B Z +C Z +C Y +B X +B Y +A X +A Z +B Z +A Z +B Z +A X +B Z +A Z +B Y +A Z +C Y +B Z +C Z +B Z +B X +B Z +C X +A X +B X +C Z +B X +B Y +A X +B X +B X +A Z +B X +B Z +C Z +B X +B X +B X +A Y +A Z +C Y +A Y +B X +A Z +A Z +B Y +B Y +C Z +C Z +B Z +C Z +B Z +A Y +A X +C Y +B X +B Z +B Z +B Z +B X +B Z +B Z +A X +A Y +B X +B X +B X +C X +C Y +C X +B X +B Z +B Y +C X +A Y +A Y +B Z +C Y +C Z +C Z +C Z +A Y +B Y +B Z +B X +B Z +B Y +A X +C Y +C Z +A Y +B Z +A X +A X +A X +B Z +B X +C Y +B Y +C Z +B Z +B Z +C Y +B Z +C Z +B X +B Y +A Y +C Z +A Y +B Z +B Z +B X +B X +B Z +B Z +B X +B X +C Z +B Y +B Z +B X +C Y +C Z +A Y +C Z +B Z +C Y +B X +C Z +A X +B Z +B X +C X +C Z +B Z +C Z +A X +B Z +C X +B Z +C Z +A Y +B Z +B Z +C Z +B Y +B Z +B X +B X +A X +A Y +A Y +C Y +C Y +C Y +B Z +B Z +A Y +B X +A Z +C Y +C Z +B X +A Y +A Y +C Z +C Z +C Y +A Z +B Z +B Z +B Z +A Y +A Y +C Z +B Z +B X +C Z +B Z +C Y +A Z +B X +B Z +A Z +B X +A X +B X +A X +B X +B Z +B Z +B Z +C Y +C Z +A Y +B X +A X +C Z +C Y +C Z +B Z +B X +A Y +A X +C Z +B X +C Z +C Y +A X +B X +C Z +B X +B Z +C Y +B X +A X +A Y +A X +B Z +B Z +C Z +B X +A Y +B X +B X +A Z +B Y +B Z +B X +B Z +B X +B Y +B X +B X +A Y +A Y +A X +C Y +A Y +B X +C Y +B Z +B Z +A Y +B X +C Y +C Z +C Y +B Z +C Z +C Y +A Y +A Y +B Z +B X +A X +A Y +B X +B Z +B X +C Z +C Z +A Y +B X +B Z +B Y +C X +C Y +B Z +A X +B Z +A Y +A X +A Y +B X +B Z +B Z +B X +B Z +C Z +B Z +A Y +B Z +C Z +B X +B X +B X +B X +B X +B X +B Y +B Z +B X +B Z +A Z +B Z +C Y +A X +B Z +B Z +C Z +B X +A Z +C Y +B Z +B X +A X +A Y +C Y +B Y +A X +B Y +B X +B Z +C Y +B Z +C Y +A Z +B Z +C Y +C Z +A Y +C X +C Y +B Z +B X +B Z +B X +B X +A Y +B Y +B X +B X +C Y +B X +C X +B Y +A Y +C Y +B X +B X +A X +B X +A X +A X +B X +B X +A Z +C Z +C Y +B X +B X +C Z +B X +C Y +C Z +A Y +B Z +C Y +B X +B Y +B X +B X +C X +A X +B X +B Z +B Z +C Y +C Y +B Y +A Y +B Z +B X +B X +A Z +B Z +B X +B X +A Y +B X +B X +B X +A X +B X +B X +B X +B Z +B X +A Z +B Y +B X +B Z +B Z +B Z +A X +B Z +B Z +B X +B Z +C Z +C Y +A Z +C X +C Y +A Y +B X +B Z +C Z +B X +C Z +B Z +A Z +A Y +B Y +B Z +B X +A X +B Z +C Z +C Y +B Z +A X +A Y +A Z +B Z +C Y +A Y +B X +C Z +A Y +B X +B Z +B X +C Y +B X +B X +B X +A Z +B Z +C Z +B Z +C Y +B Z +C Z +B Z +B X +C Y +C Z +A X +C Z +C Y +C Y +B X +A Y +A Z +B X +B Z +B Z +B Z +A X +A Z +B Z +A Z +A Y +C Z +B Y +B Z +B X +B X +C Z +B Z +B Z +B Z +B Z +B X +B X +A X +A X +A Z +B Z +B X +B Z +B Z +C X +A Y +B Y +B X +B X +B Z +B X +B X +B X +C Y +B Z +B X +C Y +B Z +A Y +B Y +B Z +A Y +A X +B X +B X +B Z +A X +B Z +A Y +B Z +B X +A X +A X +A X +A Y +B Z +A Y +A X +B X +B Z +A Y +B Z +B X +B X +A Z +B Z +B Z +B Z +B Z +A X +B Z +B Z +B X +B Z +C Y +B Z +B X +B Z +B X +C Y +B X +B Y +B Z +B X +A X +C Y +B Z +B Z +B X +A Y +B X +B Z +C X +C Y +A Y +B X +B X +A Y +B Z +C Y +B Z +A Y +C Y +B Z +A X +A X +A Y +C Y +C Z +B Z +C Z +B X +A X +B X +A Y +A Y +C Z +C Y +A Z +B Z +A Y +B X +B X +B Z +C Z +B X +B X +B Y +C Y +C Z +A Y +A Z +A X +A Y +A Y +A Z +B Z +B Z +C Z +B Z +B X +C Y +A Y +B X +C Z +A X +B Z +B Y +A Y +B X +B X +A X +C Z +C Z +C Y +C Y +A X +B X +B X +B Y +A Z +C Z +A Y +C Z +C Y +B X +C Y +B Z +A Z +B Y +B X +C Y +B Y +B Z +A Z +A X +B X +C Z +C Z +B Z +B Z +C Z +B X +B X +C Y +A Y +C Y +C Z +B Z +B X +A Y +B Y +B Z +C X +B X +B Z +B Z +B X +B Z +B Z +C Y +A Y +B Z +B X +A Y +A Y +B Z +B Y +C Y +B Z +B Y +B Z +A Y +B X +C Z +A X +B X +C Y +B Z +B Y +B Y +B Z +A X +A X +B Z +B X +A X +B Z +B Z +A Y +B X +A X +B X +B X +A Y +C Z +C Y +B Z +B X +B X +B X +A X +B X +B Z +B Z +B Z +B X +B Z +B Z +A Z +C Y +B X +B X +B X +A X +C Z +A Y +A Y +B Z +B X +C Z +B Y +C Z +B X +A Y +C X +B Z +B X +B X +C Y +B X +B X +B Z +A X +B X +A Z +B X +B X +B Z +B X +B X +B Z +A Y +B X +B Z +B X +B X +C Y +B X +B Z +B Z +B X +B Z +C Z +B Y +A Y +B Z +B X +B X +A X +B Z +B X +B X +B Z +C Z +B Z +B X +C Y +B Z +B Y +B Z +B Z +A Z +B X +B X +B X +B X +C Y +A Y +B X +B Z +B X +B X +C Z +C X +B Z +B Z +B X +B Z +A Y +A Z +C Z +A X +A X +A Y +A Y +A Y +C Z +B Z +A Y +C Z +B X +A Z +C Y +A X +A X +A Y +B Z +A X +B X +B X +C Z +B Z +C Z +B Z +A X +C Y +C Z +A X +A Z +B X +C Y +A X +B X +B Z +B X +A Y +A Z +C Z +B Z +A X +B X +C Y +B X +B X +C Y +B X +A Z +A X +C X +B Z +B Y +C Z +C Z +A Y +A Y +A Y +B X +A Z +B X +A X +C Y +B X +A X +B X +B X +B Z +B Z +B Y +A Y +C Z +C Z +B X +B Z +C Z +B X +C Z +B Z +A Y +A X +B X +C Z +C Y +A Y +B Z +C Y +B X +C X +A X +B Z +C Z +B Z +B X +A Y +B Z +A Y +A Y +A Y +C Y +C Y +C Z +A Y +C Y +C Y +B Z +B X +C Y +C Y +B X +B Z +B X +C Z +C Y +C Y +B X +B X +A Y +B Z +B Z +B X +B X +C Z +A X +B Y +B X +A Z +B Z +B X +B Z +C Y +B Z +C Y +B Z +A Z +C Y +A Z +C Z +B X +B X +C Y +B X +C Y +A Z +B X +B Z +B Z +B X +B Z +B Y +A Y +B Z +B X +B Z +A Y +A Y +C Z +A Y +C X +B Z +A Y +A Y +B X +B Z +A Y +C Z +B Z +B Z +C Y +A X +B Z +C Z +B X +B X +B Z +A Y +B Y +C Z +A Y +B X +C Z +B X +B Z +B Z +B Z +B X +B Z +B X +A Z +B X +B X +B X +B Z +A Z +A Y +B Z +B X +B X +C X +A Y +A X +C Y +A Z +A X +C Y +A Y +C Y +A Z +B X +B Z +B Z +C Y +A Y +B X +B X +A Y +C Z +B Z +B Z +A X +A Y +B Z +A Z +A Y +C Z +B X +B Z +B Z +C Y +A Y +C Z +B Z +A Y +C Y +C Y +B Z +B Z +B Z +A Y +B Y +A Y +B Z +C Z +A Y +B X +C Y +A Z +A X +B X +A Z +B Z +A Z +C Z +B Z +A Y +A X +A X +C Y +A Y +B Z +A Y +B Z +B X +A Y +A X +A Y +A X +C Z +A Y +B X +C Z +B X +B Z +B Z +C Y +B Z +B X +A X +B Y +A Y +B X +C Z +A Y +B Z +B X +A Y +C Z +C Y +B Z +B Z +B Z +A X +B X +A Y +B Z +C Y +A X +A Z +B Y +B X +C Y +B Z +C Y +A Z +B X +A Y +A Y +C Y +A Z +B X +A Z +B X +B X +A X +B X +B Z +B X +B Y +B Z +B Y +B X +A Y +A X +C Z +B Y +C Y +B X +C Y +B X +B Z +B X +B X +B Z +B Z +B Z +C Z +B Z +B Z +A X +A Y +B X +B X +B X +C Z +B X +B Z +C Y +A X +A Z +B X +C Z +A X +A X +B Z +A Y +B Z +A X +C X +C Z +B X +B X +C Y +A X +B X +A X +C Y +C Y +A X +A X +B X +B Y +B Z +A X +B X +B X +B X +B Y +A Z +B Z +C Z +B X +B X +B Z +A Y +C Y +B X +B X +A X +C Y +C X +C Z +B X +B Y +A Z +C Z +A X +C Y +B Z +B X +A X +B X +B X +B Z +C Y +A Y +A X +C Z +B Z +A Y +B X +B X +B X +A Y +B X +C Y +B Y +A X +A X +B Y +B X +B X +B Z +B Z +A X +C Z +C Z +A X +C Y +B X +C Z +B X +B Z +B X +B Z +A Y +C Y +B X +B X +B X +B X +B Y +C Y +B Y +B Y +A Y +B Z +C Y +A X +C Z +B X +B Z +C Y +A Y +B X +C Z +B Z +A Z +A Z +A Z +A Y +C Z +A Z +B X +C Z +B Z +B X +C X +A Z +B Y +A Y +B Y +C Y +B X +A X +A X +A Y +A Y +A X +B Y +B Z +B X +A X +C Y +B X +B Y +A Y +C Y +A Y +B Z +B X +B Z +B Z +B X +B X +B Z +B Z +C Z +C Y +A Z +B X +B X +A Y +C Y +B X +B Z +B X +C Z +A Z +B X +C Z +B X +B X +B X +B Z +C Z +C Z +B X +C Y +B Z +C Z +B Z +C Z +B Y +B X +C Z +A X +B X +B X +C Y +B Z \ No newline at end of file