diff --git a/src/main.rs b/src/main.rs index 4d0c721..2ab289a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,10 +1,10 @@ -use advent_of_code::prob1; +use advent_of_code::{prob1, prob2}; fn main() { let args: Vec = std::env::args().collect(); let file_path = args .get(1) .expect("Please provide an argument on command-line."); - let max = prob1::solve_part2(file_path); + let max = prob2::solve_part1(file_path); println!("{max}"); } diff --git a/src/prob2/mod.rs b/src/prob2/mod.rs index d938ce7..1646b0f 100644 --- a/src/prob2/mod.rs +++ b/src/prob2/mod.rs @@ -40,7 +40,10 @@ impl From for Play { 'X' => Play::Rock, 'Y' => Play::Paper, 'Z' => Play::Scissors, - _ => panic!("Only A, B, C, X, Y or Z letters are available."), + other => panic!( + "Only A, B, C, X, Y or Z letters are available. Had {}", + other + ), } } } @@ -59,17 +62,39 @@ pub fn round_score(play: char, counter_play: char) -> i32 { let coup = Play::from(play); // translate to the play let counter = Play::from(counter_play); // translate to the play if coup == counter { - (ResultPlay::Draw as i32) + (counter_play as i32) + let draw: i32 = ResultPlay::Draw.into(); + let result: i32 = counter.into(); + draw + result } else { use Play::*; use ResultPlay::*; + let loss: i32 = Loss.into(); + let win: i32 = Win.into(); match (&coup, &counter) { - (Rock, Paper) => (Win as i32) + (counter as i32), - (Rock, Scissors) => (Loss as i32) + (counter as i32), - (Paper, Rock) => (Loss as i32) + (counter as i32), - (Paper, Scissors) => (Win as i32) + (counter as i32), - (Scissors, Rock) => (Win as i32) + (counter as i32), - (Scissors, Paper) => (Loss as i32) + (counter as i32), + (Rock, Paper) => { + let result: i32 = counter.into(); + win + result + } + (Rock, Scissors) => { + let result: i32 = counter.into(); + loss + result + } + (Paper, Rock) => { + let result: i32 = counter.into(); + loss + result + } + (Paper, Scissors) => { + let result: i32 = counter.into(); + win + result + } + (Scissors, Rock) => { + let result: i32 = counter.into(); + win + result + } + (Scissors, Paper) => { + let result: i32 = counter.into(); + loss + result + } _ => panic!("Case not covered, impossible to reach."), } }