From 2ee707c5e1ef6d41acd2163f332fcd38c07e9be0 Mon Sep 17 00:00:00 2001 From: omagdy7 Date: Sun, 9 Apr 2023 03:17:14 +0200 Subject: Added the solution for day2 in rust and added some test files --- 2022/Rust/input/day1.test | 14 + 2022/Rust/input/day2.prod | 2500 +++++++++++++++++++++++++++++++++++++++++++++ 2022/Rust/input/day2.test | 3 + 2022/Rust/input/day3.test | 6 + 2022/Rust/src/day2.rs | 116 +++ 5 files changed, 2639 insertions(+) create mode 100644 2022/Rust/input/day1.test create mode 100644 2022/Rust/input/day2.prod create mode 100644 2022/Rust/input/day2.test create mode 100644 2022/Rust/input/day3.test (limited to '2022') diff --git a/2022/Rust/input/day1.test b/2022/Rust/input/day1.test new file mode 100644 index 0000000..2094f91 --- /dev/null +++ b/2022/Rust/input/day1.test @@ -0,0 +1,14 @@ +1000 +2000 +3000 + +4000 + +5000 +6000 + +7000 +8000 +9000 + +10000 diff --git a/2022/Rust/input/day2.prod b/2022/Rust/input/day2.prod new file mode 100644 index 0000000..cc2bfe1 --- /dev/null +++ b/2022/Rust/input/day2.prod @@ -0,0 +1,2500 @@ +A Z +C X +A Z +A Z +C Y +C Y +A Z +A Y +C Y +A Y +A Z +A Z +A Z +A Y +A Z +A Y +C Y +C X +A Y +C Y +C Y +C X +A Z +C Y +C X +A X +A Y +A Z +A Y +A Y +C X +C X +B Y +C X +C X +A Y +A Z +A Z +A X +A Z +A Z +C Y +A Z +A Z +A Y +C X +C Y +C X +B X +C Z +A Y +A Z +A Z +A Z +A Y +A Y +C X +A Y +A Z +C Y +A Y +A Y +A Z +A Z +C Y +A Z +C Y +A Y +A Z +A Z +C Y +B Z +A Z +A Z +A Z +A Z +C X +C X +A Y +A X +A Y +A Z +A Z +C X +A Z +C X +A Z +C Y +C X +A Z +A Z +A Z +A Z +C X +C Y +A Z +A Z +C Y +A Z +B Z +C X +A Z +A X +C X +A Z +C Z +A Z +C X +A Z +A Y +C X +C Z +A Z +C X +C Y +A Z +B Z +B Y +A X +A X +A X +A Z +A Z +A X +A Z +A X +A Z +A Z +C X +C X +B Z +A Z +A Y +A Z +A Z +A Z +A Z +C X +C X +C X +A Z +A Z +A Z +A Z +A X +A Y +A Y +C X +C X +B Z +C X +A X +A Z +A Z +C X +C Z +A Z +A Z +C Y +A X +A Z +C Y +A X +A Y +A Y +A Y +C Y +A Z +A Z +C X +C X +C X +C X +B Z +C Y +C X +C X +A Y +A Y +A Z +A Z +A X +C X +A Z +B Z +A Z +C X +A Y +A Z +A Z +A Y +A Y +A Z +C X +A Y +C X +C X +A Z +A Y +C X +A Z +A Z +A Y +A Z +A Z +C Y +C Z +A Y +A Z +C X +C X +A Z +A Z +C Y +A Y +A Z +A Y +A Z +C X +A Z +A Z +C X +A Y +A Y +C Y +A Z +C Y +A Z +A Z +C Y +A Y +B Z +C Y +C X +C X +A Z +C Y +A X +C Y +A Z +A Y +A Z +C X +C X +C Y +C Y +A Y +A Z +C X +C X +A Y +A X +A Y +B Z +A Y +C Y +C X +C X +A X +C X +B Z +A X +C Y +C X +C X +A X +A Z +B Z +A Z +A Z +A Y +A X +A Z +C X +A X +C Y +A Z +A Z +A X +A Z +A Z +C X +C X +A Z +A Z +A Z +A X +A Z +A X +B Y +A Z +A Y +C Y +A Z +C X +A Z +C X +A Y +A Z +C X +C Y +A Y +C Y +A Z +C X +A Z +A Z +C X +A Y +A Z +A X +A Z +A Z +A Z +B Y +C X +A X +A Z +A Z +C Y +C Y +C X +C X +C X +A X +A X +A Z +A X +A Y +A Z +A Y +A Z +C Y +C Z +A Y +A Z +A Z +A X +A Z +A Z +C X +C Y +A Y +C X +C X +A Z +C X +C X +C X +A X +A Z +A Z +A Z +A Z +B Y +A Y +A Y +A Z +C X +A Y +A Z +C X +A Z +C Z +A Y +C X +A Z +B Z +A Y +A X +A Z +C X +A Z +A Z +A Z +A Z +A Z +B Z +A Z +C X +A Y +C X +A Z +A Z +A Y +A Z +B Z +C X +A Y +C Y +A Z +A Z +C X +C X +A Y +C X +C Y +B Z +A Y +C X +A Y +C X +A X +A Y +A Z +A Z +A Y +C X +A X +C X +B Y +A Z +A Y +B Y +A Y +C X +A Z +A Z +C X +C Y +A Y +C X +C Y +A Y +A Z +A X +B Z +C X +A Z +A Y +A Z +B Z +A Z +A X +C Y +A X +A Z +A Y +C Y +A Z +C Y +A Z +C X +C X +A Y +C X +C X +A Y +A Z +A Z +A Y +A X +C Y +A Z +A Z +C X +A X +A Z +C Z +A Z +C Y +A Z +C X +A Z +A Z +A X +C X +C X +C Y +B Z +B Y +C Y +A Y +A X +A Z +C X +A Y +A Y +A Z +A Z +C Z +C X +C X +C X +A Z +C X +A Z +A Z +A Y +C Y +C X +C X +C X +A Y +C X +B Z +C X +A Z +C Y +A Y +C Y +A Z +A Z +C X +A X +A Z +A Y +A Z +B X +C Z +A Z +C Z +A X +C X +C X +C X +C X +A Z +A Y +A Z +A Z +A Z +A Z +A Z +C Z +C Y +C Y +C X +C Y +A Z +C X +C X +A Z +A Z +C X +C Y +C Y +A Z +A X +C Y +C Y +C X +A Y +C X +A Z +A Z +A Y +C Y +A Y +C X +C X +A Z +A Z +C Y +A Z +C X +A Y +A Y +A Z +C Y +A Z +C X +A Y +A Z +A Z +A Z +A Z +C Y +A Y +C Y +A Z +A Z +A X +A Y +A Y +A Z +C Y +A Z +A X +A Z +B Z +C X +C X +C Y +A Z +A Z +C X +C Z +A Z +C X +C Y +A Z +B Z +A Z +B Z +A X +A Y +A Z +A Z +A Z +A Z +C Y +A Z +A Z +A Z +B Z +A Z +C X +C X +A Z +C X +A X +A Z +A Y +A Y +A X +A Z +A Z +A Z +A Z +B Z +A Z +C Y +C Y +C X +C X +B Z +C Y +A Z +C Y +A Z +A Y +C Y +A X +A Y +C X +A Y +C X +A Z +A Z +B Z +A Y +C Y +C X +A Z +A Z +C X +A Y +A Z +A Z +A X +A Y +A Y +A Y +A Z +A Y +A Z +C X +A X +A Z +A Z +C Y +A Z +C X +A Z +C Y +A Y +A Z +A Z +A Z +A Z +C Y +A X +A Z +A Z +A Y +A Z +B Z +A X +A Y +C X +C X +A Y +A Z +C Y +A Z +A Y +A Y +A Z +A Y +A Y +A Z +A Z +A Z +C X +A Z +A Y +A Z +A Z +C Y +A Z +C X +A Y +C X +C Y +A Z +C Y +A Z +A Y +C Y +C Y +A Z +C X +C X +C X +A Z +A Z +A Y +C X +A Z +A X +A Z +A Z +C X +A Z +C Y +A Y +A Z +A Y +A Z +A Z +C Y +A Z +C X +A Z +A X +A Z +A Z +C X +A Z +A Z +C Y +C X +A Z +C Y +C X +C X +A Z +A Z +A Z +A X +C X +A Z +A Z +C Y +A Y +C X +A Y +C X +C Y +A Y +A Z +C X +A Z +B Y +A X +B Z +A Y +A X +C Y +A Z +A X +A Z +A Z +C Y +A Z +B Z +C X +C X +B Y +A Z +A Z +A Z +C Y +C X +A Z +A Y +A Y +A Y +C Y +C X +A Z +A X +A X +A X +A Z +A Z +A Z +A Z +C X +C X +A Z +C X +A Y +C X +B Z +A Z +A Z +C X +A Z +C X +C X +C X +A Y +C Y +C X +A Y +C X +C Y +B Z +A Z +C X +A Z +A X +B Z +A Y +B Y +A Z +A Z +A X +A Z +A X +A Z +A Z +C X +C Y +A X +C Y +C X +A Z +A Z +A Z +C Y +A X +A Y +A Z +A Y +C X +B Z +A Z +A Y +C Z +C X +A Z +A Z +A Z +B Z +A X +C X +A Z +A Z +B Z +A Z +A Z +B Z +A Z +C X +A Z +C X +A Z +C X +A Z +C Y +A Z +A X +A Y +A Y +C X +A Y +C X +B Z +A Z +A Z +A Z +A Z +C X +A Z +C X +A Z +A Y +A Z +B Z +A Y +C Z +A Y +C X +A Z +A Z +A Y +B Z +A X +C Y +A Z +A Y +A Z +A Y +A Y +A Z +A Z +A Z +A X +A Z +C Y +A Y +A X +A Y +C X +A Y +C X +A X +C X +A Z +C Y +A Y +A Z +A Z +A X +A Y +C X +C X +A Y +A X +A Z +B Z +A Y +A Z +A X +A Z +B Y +A Y +A Y +A Z +C X +A Z +A Z +A Y +A Z +C Z +A Z +A Z +A Z +A Z +C Y +C Y +A Y +B Z +C Y +A Y +C Y +A Z +A Z +A Z +A Z +C Y +A Z +A Z +C Y +C X +A Y +A Y +A Z +C X +C Z +C X +C X +A Z +A Z +A Y +A Z +A X +C Y +A Z +A Z +C Y +C X +A X +A Z +A Z +A X +C X +C X +C X +A Z +A X +C X +C Y +A X +A Z +C X +A Z +A Z +C X +A Y +A Z +A Z +A Y +A Z +C X +A Z +A Z +C X +A Y +A Z +A Z +C X +A Z +A Y +A Z +C Y +A X +A Z +A Z +C X +A Z +A Y +C Y +B Z +A Z +A Y +C X +A Z +B Z +A Z +C Z +A X +A Z +A Z +C Y +A Z +A Y +C X +C Y +A Z +A Z +A Y +A X +C Y +A Y +C X +C Y +A Z +C Y +A Z +C X +A Z +A Z +A X +A Z +A Z +B X +A X +A Z +C Y +A Z +A X +C X +A Z +A Z +C X +C Y +C Y +A X +A Y +C Y +A Y +A Z +A Z +A Z +A Z +A Y +C X +C X +C Y +C X +A Z +A X +B Z +B Y +C X +C Y +A Y +A Z +A Y +C X +C Z +A Z +A Y +C Y +C X +A Z +A Z +A Y +C X +C Z +C Y +A Z +C X +C Y +A X +A X +A Y +A Z +B Z +A X +A Y +A Y +C X +C Y +A Z +A X +A Z +A X +A Y +A Z +A Z +A Z +C X +A Z +A Z +A Z +C Z +C Y +C Y +A Z +C Y +C Y +C Y +C X +A Z +C X +C X +A Z +A Y +A Z +A Z +A X +A Y +A Y +C X +C X +A Z +A Z +A Z +A Z +A Y +A Z +A Z +A Z +A Z +A X +A X +A Y +A X +C Y +A Y +A Z +C X +A Y +A Y +A Z +A Z +A Z +C X +A Z +C X +C X +C Y +A Y +A Z +A Y +A Z +C X +C X +A Z +A Z +A Z +C X +A X +A Z +A Z +C Y +C Y +A Y +A Y +A Z +A Z +C Y +C X +C Y +A X +C Y +C X +C Y +A Z +A Z +A X +C Y +C Y +A Z +A Y +C X +A X +B Z +A Z +C X +A Y +A X +A Z +A Z +A Z +C Y +C X +A Z +C X +A Z +A Z +A Y +A Z +A Y +A X +A Z +C Z +A Z +A Z +A Z +A X +A Z +A X +C X +A Z +A Z +C Y +A X +A Z +C X +C X +A Y +A Z +A Z +C X +B X +A Z +C Y +A Z +C X +A Y +A Z +C X +A X +A Z +A X +A Z +C X +A Z +A X +A Z +C X +C Y +A Y +A X +A X +A Z +C Y +C Y +A Y +A Y +A Y +A X +A Z +A Z +A Z +C Y +C Y +A Y +B X +B X +A Z +C X +C X +A Z +C Y +C X +A Z +A Z +A Z +A Z +C X +A Z +A Z +C Y +A Y +C Y +A Z +C Y +C Y +A Z +C X +A Z +A X +A Z +C X +C X +A Y +B Z +A Y +C Y +A Z +C Y +A X +C X +A Y +C X +A Z +C Z +C Y +A Z +C X +C Y +A Z +A X +A Z +A Z +A Z +C X +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Y +A Z +A X +A Y +C Y +B Y +C X +B Z +A Z +A Z +A Y +B Z +A Z +A Z +C X +C Y +C X +A Y +A X +C X +C Y +A Y +C X +C Y +A Z +A Z +A Z +A Y +C X +A Y +C X +B Z +A Z +A Y +A Z +A Z +A Y +C X +A Z +C X +C Y +A Y +A Z +B Z +C X +A Y +C X +A Y +A Z +C X +A X +C X +B Y +C X +A Z +A Y +A Z +A Y +A X +C X +C X +A Y +C X +A Y +A Y +A X +B Y +A Y +C X +C X +A Y +B Z +B X +B Z +A Y +A Z +C Y +A Y +B Y +A Z +C X +A Z +A Z +A Z +A Z +B Z +C X +C Y +A Z +C Y +C Y +A X +C X +A Z +A Z +A Z +C X +C X +C X +A Y +C Z +C Z +A Z +C X +A Y +A Z +A Z +A Z +C X +A Z +A X +A Z +A Z +A Z +A Z +A Y +C Y +C X +A X +A Y +C X +A X +A Z +A Z +C X +A Z +A X +A Z +A Z +A X +A Z +A Z +A X +A Z +A X +B Y +A Y +A Y +C Y +A Z +A Y +C X +A Z +A Y +A X +C Y +B X +C Y +A Z +C X +A Y +A Z +A Y +A X +C Y +A Z +A Z +C Y +C X +A Z +C X +A Y +C X +A Z +A Y +A Z +A Z +A Z +A Y +A Z +C X +C X +A X +C X +C X +A Z +C X +A Z +C Y +C X +A Z +A Z +A Z +C X +A X +C Y +A Z +C Y +A X +A Z +C X +A Z +A Z +A X +A Z +C X +B X +A Z +A Z +A Z +C X +A Y +A Y +A X +C Y +C Y +A Z +A Y +A Z +A Z +C X +A X +A Y +A Z +A Z +A Z +A Z +B Z +C X +C X +C X +A Z +C Z +A X +C X +A Z +C Y +A Z +A Z +A Y +A Y +C X +A Z +A X +A Z +A Z +A Z +A Z +C Y +A Z +A Y +A X +A X +A Z +C X +A X +A X +A Z +A Y +C X +A Z +A Z +A Y +A Z +B Z +C X +C X +C Z +C Y +C X +A Z +C Y +A Z +C Z +A Z +A Y +A Y +A X +A X +A Z +A Y +A Y +A Y +A Y +A Z +C Y +A Z +A Z +C X +A Z +A Z +C Y +A Y +C X +A Y +C X +A Z +B Z +A X +B X +A Y +A X +A Y +B Z +A Y +A Z +C Y +C Y +A Z +A X +A Z +A Z +C Z +A Z +A Y +C X +A Y +C X +A X +A Y +C Y +A Y +A Z +A Z +C X +C X +B Z +A Z +A Z +A X +C X +C Y +A Z +A Z +A X +C X +C Z +A Z +C Y +A Y +B Z +C Y +A Z +C X +A X +A Z +A Z +A Z +A Y +C Y +A Z +C Y +A Z +A Z +A Z +A Z +A Y +C X +A Y +C Y +B Z +A Z +C X +C Y +A Z +C X +A Z +C X +C Z +A Z +C X +C X +A Z +A Z +A Y +A Y +A Y +C X +A Y +A Z +A Z +A Z +A Z +A Z +A Z +A Y +A Z +A X +C Y +A Z +A Z +A Z +A Y +A Z +A Z +A Z +A Z +C X +B Z +A Z +A Y +A Y +A X +A Z +A Z +C Z +A Z +C X +A Y +A X +B Z +A Z +A Z +A Z +C Y +C Z +C X +A Z +C Y +C Y +C Y +C X +B Z +A Z +A Z +C Z +A X +A Z +A Z +A Z +C X +A Z +A Z +C Y +C Y +A Z +A Z +C X +A Y +C Y +C Y +A Z +A Z +A X +A Z +A Z +A X +A X +C X +A Z +A X +C X +C X +A Z +A X +A Z +C X +C X +C X +C Y +A Z +A Z +A X +A Z +A Y +A Z +A Z +C Y +A Z +A Z +A Z +A X +A Z +C X +A X +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Y +A X +A Y +A X +C Y +A Z +A Z +C X +A Z +A Z +A Z +A X +A Z +A Z +A Y +C X +A Y +A Z +C X +A X +A Y +A Z +A Z +A X +A Z +A Y +C X +A Y +A Z +A Z +A Z +A Z +C X +C Y +A Z +B Z +C X +A Z +A Z +C Y +C Y +C X +A X +C Y +B Y +A Z +A Z +A Z +C Y +A Z +A X +A Y +A Z +A Z +A Z +C Y +A Z +C Y +C X +A Z +A Z +A Z +A Z +A Z +A X +A Z +A Z +C X +A Z +A Y +C Z +A Z +A Z +A Z +B X +C X +A Z +A Z +A Z +A Z +C X +A Z +A Z +A Y +A X +C X +C Y +A X +A Y +C X +A Z +A Z +C X +C X +A Z +C X +A Z +A Y +C X +A Z +B X +B Y +A X +C Y +A X +A Y +C Y +A Z +A Z +A Z +C X +A Z +A X +A Z +C Y +A Z +A Z +C X +A Z +A Z +A Y +A Z +A X +A Y +A Z +C X +C Y +B X +C Y +A Y +A Z +C X +A Z +C X +C Y +A X +A X +A Z +A Z +C Y +A Y +A Y +A Z +A Z +C X +A X +C X +A X +A Y +C X +A Z +A Z +B Y +A Z +A Z +A Z +A Z +A Z +A X +A Y +A X +A Z +A Z +C X +A Y +A Z +C Y +C X +C X +C X +C X +C Y +A X +A X +C Y +A X +A Y +A Y +B Z +A Z +B Y +C Y +A X +A Y +A Z +A Z +A Z +A X +C X +A Z +A Z +A Z +A Z +A Z +A Y +A Z +B Z +A Z +A Z +A Y +C Y +C Y +C X +A Z +A X +C X +A Y +B Z +C X +A Z +C X +C Y +C Y +A X +A X +C X +A Z +A Z +A Y +A X +A X +A Z +C Y +B X +A Z +A Z +A Z +A Z +A Y +A Y +A Z +C Y +C Y +A X +A Z +A Z +C Y +A Y +A Y +A X +A Y +A X +A X +A X +A Z +A Z +A Y +A Z +C X +A Z +A Y +A Z +A Z +A Y +A Z +A Z +C X +A Z +A Y +A Z +A Z +A Z +A Z +A Z +A Z +A Y +C X +B Z +C Z +A Z +A Y +A X +A X +C Y +C Y +A X +C X +B Z +A Z +C X +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Y +A Z +A Z +A Y +A Z +A Y +A Y +A Z +A Z +A Y +A Z +C Y +A Z +A Z +A Z +C X +C X +A Z +C Y +A Z +A Z +C X +A Z +C X +A Y +A Z +C Y +A Z +A Z +C X +C Y +A Z +C X +C X +A X +A Y +C Y +A Y +A Z +C X +A Z +A Z +A X +A Z +C Y +A Z +C X +A Z +C X +A Z +C X +A Y +C Y +A X +A Z +A Z +C Y +A X +A Z +A Y +B Z +A Z +A X +A Z +A Z +A X +C X +A Z +A Z +C Y +A Z +A Y +A Z +C Y +A Z +A Y +A Z +C Z +A Y +A Z +A Y +C Y +A Z +C X +A X +B Z +C X +C X +A Z +A Z +A Y +A X +A Z +A Z +B Z +A Z +C Z +A X +A Z +A Z +A Z +A Z +A X +A X +A Z +A X +A Z +A Z +A Z +A X +C X +C Y +A X +C X +C X +A Z +A X +C Y +B Z +A Z +A Z +C X +B X +A Z +A Z +C X +C X +B Z +C Y +A Z +A Z +C X +A X +A Y +C Y +C Y +B Z +A Y +C X +A Z +A Z +A Y +C X +A Z +A Z +C X +C Y +A Z +C X +C Y +C Y +C X +C Y +A Z +C Y +A Z +C X +A Z +C Y +C Z +A Z +B Z +A Z +C X +C X +B Y +B Z +C Y +C X +C X +A Y +C X +C X +A Z +A Y +A Z +C X +A X +A Z +A Z +A Z +A Z +A Z +A Z +A Z +C X +C X +A Z +C Y +C X +A Z +B Z +A Z +A Z +A X +C X +A Y +A Z +A Z +A Y +A X +C Y +B X +A Z +A X +C Y +C X +C X +C Y +C Y +A Z +A Z +C Y +A Z +A Y +C Y +A Y +C X +A Z +C X +C Y +C Y +A Z +A Z +A X +A Y +A Z +A X +A Z +A Z +A Z +C Y +A Z +A Z +C X +C Y +A Z +A Z +A Z +C Y +C X +A Z +C X +A Z +A Z +A Z +A X +A Z +A Z +A Y +B Z +A Z +A Z +A Z +C Y +A Z +B Z +A Z +C Z +A Z +A Y +C X +C Y +C X +C X +A Z +A Z +A Y +A Y +A Z +A Y +B Z +C Y +A Y +A Z +C X +A Z +A Z +C Y +A Y +A Z +A Y +C Y +A Z +A Z +A X +B Z +A Z +A X +C X +A Z +C Y +C Y +A Z +B Y +A Y +A Z +A Z +A Z +A Z +C X +C X +A Z +C X +A Y +A Z +A Z +C Y +A Z +A Z +C Y +C X +B Z +A Y +A Y +C X +C X +A Z +A X +B Z +A Z +C Y +A Z +A Y +A Z +A Z +A Y +C Y +C X +A Z +C X +A Z +C Y +A Z +C Y +A Y +A Z +A Y +A Z +C X +A Z +A Z +C X +A Z +B Y +A Z +A Z +C Y +C X +C X +A Z +A Z +C X +B Z +A Y +A Z +A Y +A Z +A Z +A Y +A X +C X +C X +A X +A Z +A Y +A Y +A Z +A Y +A Z +A Z +C Y +A X +A Z +A Z +C X +A Z +A X +B X +C X +A Z +A Y +B Z +C X +C Y +A Z +B Z +C Y +A Z +A Z +A X +A Z +A Z +A Z +A Z +A Z +A Z +A Z diff --git a/2022/Rust/input/day2.test b/2022/Rust/input/day2.test new file mode 100644 index 0000000..db60e36 --- /dev/null +++ b/2022/Rust/input/day2.test @@ -0,0 +1,3 @@ +A Y +B X +C Z diff --git a/2022/Rust/input/day3.test b/2022/Rust/input/day3.test new file mode 100644 index 0000000..f17e726 --- /dev/null +++ b/2022/Rust/input/day3.test @@ -0,0 +1,6 @@ +vJrwpWtwJgWrhcsFMMfFFhFp +jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL +PmmdzqPrVvPwwTWBwg +wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn +ttgJtRGJQctTZtZT +CrZsJsPPZsGzwwsLwLmpwMDw diff --git a/2022/Rust/src/day2.rs b/2022/Rust/src/day2.rs index 8b13789..adfcb96 100755 --- a/2022/Rust/src/day2.rs +++ b/2022/Rust/src/day2.rs @@ -1 +1,117 @@ +// A -> Rock +// B -> Paper +// C -> Scissors +// D -> Rock +#[derive(Debug)] +enum Hand { + Rock(u32), + Paper(u32), + Scissors(u32), +} + +impl From<&str> for Hand { + fn from(s: &str) -> Self { + match s { + "A" | "X" => Hand::Rock(1), + "B" | "Y" => Hand::Paper(2), + "C" | "Z" => Hand::Scissors(3), + _ => panic!("Should've been a valid hand"), + } + } +} + +fn solve_part_one(data: &str) -> u32 { + let mut score = 0; + for line in data.lines() { + let (h1, h2) = line.split_once(" ").unwrap(); + match Hand::from(h1) { + Hand::Rock(_) => match Hand::from(h2) { + Hand::Rock(x) => { + score += x + 3; + } + Hand::Paper(x) => { + score += x + 6; + } + Hand::Scissors(x) => { + score += x; + } + }, + Hand::Paper(_) => match Hand::from(h2) { + Hand::Rock(x) => { + score += x; + } + Hand::Paper(x) => { + score += x + 3; + } + Hand::Scissors(x) => { + score += x + 6; + } + }, + Hand::Scissors(_) => match Hand::from(h2) { + Hand::Rock(x) => { + score += x + 6; + } + Hand::Paper(x) => { + score += x; + } + Hand::Scissors(x) => { + score += x + 3; + } + }, + } + } + score +} + +fn solve_part_two(data: &str) -> u32 { + let mut score = 0; + for line in data.lines() { + let (h1, h2) = line.split_once(" ").unwrap(); + match Hand::from(h2) { + Hand::Rock(_) => match Hand::from(h1) { + Hand::Rock(_) => { + score += 3; + } + Hand::Paper(_) => { + score += 1; + } + Hand::Scissors(_) => { + score += 2; + } + }, + Hand::Paper(_) => match Hand::from(h1) { + Hand::Rock(x) => { + score += x + 3; + } + Hand::Paper(x) => { + score += x + 3; + } + Hand::Scissors(x) => { + score += x + 3; + } + }, + Hand::Scissors(_) => match Hand::from(h1) { + Hand::Rock(_) => { + score += 2 + 6; + } + Hand::Paper(_) => { + score += 3 + 6; + } + Hand::Scissors(_) => { + score += 1 + 6; + } + }, + } + } + score +} + +fn main() { + let data_test = include_str!("../input/day2.test"); + let data_prod = include_str!("../input/day2.prod"); + println!("{}", solve_part_one(data_test)); + println!("{}", solve_part_one(data_prod)); + println!("{}", solve_part_two(data_test)); + println!("{}", solve_part_two(data_prod)); +} -- cgit v1.2.3