Skyler Grey | c64945e | 2023-12-02 23:38:16 +0000 | [diff] [blame] | 1 | fn main() { |
| 2 | let input = include_str!("../input.txt"); |
| 3 | |
| 4 | let mut part1_possible_id_sum = 0; |
| 5 | let mut game_power_sum = 0; |
| 6 | |
| 7 | for (index, line) in input.split('\n').enumerate() { |
| 8 | if line == "" { |
| 9 | continue; |
| 10 | } |
| 11 | |
| 12 | let game_data = line.split(": ").collect::<Vec<&str>>()[1]; |
| 13 | |
| 14 | let mut part1_possible = true; |
| 15 | let mut min_red = 0; |
| 16 | let mut min_green = 0; |
| 17 | let mut min_blue = 0; |
| 18 | |
| 19 | for round in game_data.split("; ") { |
| 20 | |
| 21 | for draw in round.split(", ") { |
| 22 | let [number_as_text, color] = draw.split(" ").collect::<Vec<&str>>()[..] else { panic!("Unparseable draw") }; |
| 23 | |
| 24 | let number = number_as_text.parse::<i32>().unwrap(); |
| 25 | |
| 26 | match color { |
| 27 | "red" => { |
| 28 | if number > 12 { |
| 29 | part1_possible = false; |
| 30 | } |
| 31 | if number > min_red { |
| 32 | min_red = number; |
| 33 | } |
| 34 | }, |
| 35 | "green" => { |
| 36 | if number > 13 { |
| 37 | part1_possible = false; |
| 38 | } |
| 39 | if number > min_green { |
| 40 | min_green = number; |
| 41 | } |
| 42 | }, |
| 43 | "blue" => { |
| 44 | if number > 14 { |
| 45 | part1_possible = false; |
| 46 | } |
| 47 | if number > min_blue { |
| 48 | min_blue = number; |
| 49 | } |
| 50 | }, |
| 51 | noncolor => { |
| 52 | panic!("bogus color {}", noncolor); |
| 53 | } |
| 54 | } |
| 55 | } |
| 56 | } |
| 57 | |
| 58 | if part1_possible { |
| 59 | part1_possible_id_sum += index + 1; |
| 60 | println!("Game {} is possible with 12, 13, 14", index + 1); |
| 61 | } else { |
| 62 | println!("Game {} is not possible with 12, 13, 14", index + 1); |
| 63 | } |
| 64 | |
| 65 | let game_power = min_red * min_green * min_blue; |
| 66 | game_power_sum += game_power; |
| 67 | println!("Game {} has power {}", index + 1, game_power); |
| 68 | } |
| 69 | |
| 70 | println!("Possible with 12, 13, 14 ID sum: {}", part1_possible_id_sum); |
| 71 | println!("Game power sum: {}", game_power_sum); |
| 72 | } |