From 59826b861c1dabd7cac8558c668172187b45ae9c Mon Sep 17 00:00:00 2001
From: Yigit Sever
Date: Fri, 2 Dec 2022 21:58:46 +0300
Subject: 2022, day2: part 1 done

---
 2022/day2/part1/src/main.rs | 31 +++++++++++++++++++++++--------
 1 file changed, 23 insertions(+), 8 deletions(-)

(limited to '2022/day2/part1')

diff --git a/2022/day2/part1/src/main.rs b/2022/day2/part1/src/main.rs
index 44ebe3a..81b20df 100644
--- a/2022/day2/part1/src/main.rs
+++ b/2022/day2/part1/src/main.rs
@@ -1,8 +1,16 @@
-let rps_result = vec![4, 1, 7, 8, 5, 2, 3, 9 ,6];
-
+///         opponent
+///         R   P   S
+/// me      A   B   C
+/// 1 R X   4   1   7
+/// 2 P Y   8   5   2
+/// 3 S Z   3   9   6
+///
+/// idx = 3 * op_idx + my_idx
+const RPS_RESULTS: [usize; 9] = [4, 1, 7, 8, 5, 2, 3, 9, 6];
 
 fn main() {
-    let score = include_str!("../../example").lines().fold(0, parse_line);
+    let score = include_str!("../../input").lines().fold(0, parse_line);
+    println!("{}", score);
 }
 
 fn parse_line(score: usize, line: &str) -> usize {
@@ -10,12 +18,19 @@ fn parse_line(score: usize, line: &str) -> usize {
     let opponent_move = moves.next().unwrap();
     let my_move = moves.next().unwrap();
 
-    match opponent_move {
-        "A" => 1,
-        "B" => 2,
-        "C" => 3,
+    let my_idx = match opponent_move {
+        "A" => 0,
+        "B" => 1,
+        "C" => 2,
+        _ => unreachable!(),
+    };
+
+    let op_idx = match my_move {
+        "X" => 0,
+        "Y" => 1,
+        "Z" => 2,
         _ => unreachable!(),
     };
 
-    0 + score
+    RPS_RESULTS[3 * op_idx + my_idx] + score
 }
-- 
cgit v1.2.3-70-g09d2