diff options
| author | omagdy7 <omar.professional8777@gmail.com> | 2023-12-03 00:13:05 +0200 |
|---|---|---|
| committer | omagdy7 <omar.professional8777@gmail.com> | 2023-12-03 00:13:05 +0200 |
| commit | 7df9855f2da22b5cbb14ee5d862e86726c2f8438 (patch) | |
| tree | 410121615b885b7c5e2dc1a79fc9c44beee2f322 /2023/Rust | |
| parent | 198019bbd43bdf6681e53be96003c19192f04cec (diff) | |
| download | aoc-7df9855f2da22b5cbb14ee5d862e86726c2f8438.tar.xz aoc-7df9855f2da22b5cbb14ee5d862e86726c2f8438.zip | |
Switched to a more idiomatic functional approach
Diffstat (limited to '2023/Rust')
| -rw-r--r-- | 2023/Rust/src/day2.rs | 23 |
1 files changed, 6 insertions, 17 deletions
diff --git a/2023/Rust/src/day2.rs b/2023/Rust/src/day2.rs index 6e5b909..c93d6dd 100644 --- a/2023/Rust/src/day2.rs +++ b/2023/Rust/src/day2.rs @@ -42,26 +42,15 @@ impl From<&str> for Game { } fn solve_part_one(data: &str) -> u32 { - let mut games: Vec<Game> = vec![]; - for game in data.lines() { - games.push(Game::from(game)); - } - let mut ans: u32 = 0; - for game in games { - if game.red <= 12 && game.green <= 13 && game.blue <= 14 { - ans += game.id as u32; - } - } - ans + data.lines() + .map(|game| Game::from(game)) + .filter(|game| game.red <= 12 && game.green <= 13 && game.blue <= 14) + .fold(0, |acc, game| acc + game.id as u32) } fn solve_part_two(data: &str) -> u32 { - let mut games: Vec<Game> = vec![]; - for game in data.lines() { - games.push(Game::from(game)); - } - games - .iter() + data.lines() + .map(|game| Game::from(game)) .map(|game| game.red * game.blue * game.green) .sum::<u32>() } |
