diff --git a/2023/day2/src/main.rs b/2023/day2/src/main.rs index dcab0e4..50479da 100644 --- a/2023/day2/src/main.rs +++ b/2023/day2/src/main.rs @@ -1,4 +1,4 @@ -use std::{collections::HashMap, fs::File, io::{self, BufRead}, path::Path}; +use std::{cmp, collections::HashMap, fs::File, io::{self, BufRead}, path::Path}; //struct to hold the game's information #[derive(Debug)] @@ -23,26 +23,27 @@ fn main() { // Consumes the iterator, returns an (Optional) String for line in lines.flatten() { let game = parse_line(&line); - println!("{game:?}"); println!("{line}"); let mut rule_break:bool = false; + let mut red_max = 1; + let mut blue_max = 1; + let mut green_max = 1; for draw in game.all_draws.draws{ match draw.get("red"){ - Some(amount) => if amount.gt(&12) {println!("{amount} > 12");rule_break = true; continue;}, + Some(amount) => red_max = cmp::max(amount.clone(), red_max), None => (), } match draw.get("green"){ - Some(amount) => if amount.gt(&13) {println!("{amount} > 13");rule_break = true; continue;}, + Some(amount) => green_max = cmp::max(amount.clone(), green_max), None => (), } match draw.get("blue"){ - Some(amount) => if amount.gt(&14) {println!("{amount} > 14");rule_break = true; continue;}, + Some(amount) => blue_max = cmp::max(amount.clone(), blue_max), None => (), } } - if !rule_break{ - result+=game.game_num - } + println!("R = {red_max}\nG = {green_max}\nB = {blue_max}"); + result += (red_max * blue_max * green_max); } println!("{result}"); }