summaryrefslogtreecommitdiff
path: root/2023/Rust
diff options
context:
space:
mode:
authoromagdy7 <omar.professional8777@gmail.com>2023-12-03 00:13:05 +0200
committeromagdy7 <omar.professional8777@gmail.com>2023-12-03 00:13:05 +0200
commit7df9855f2da22b5cbb14ee5d862e86726c2f8438 (patch)
tree410121615b885b7c5e2dc1a79fc9c44beee2f322 /2023/Rust
parent198019bbd43bdf6681e53be96003c19192f04cec (diff)
downloadaoc-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.rs23
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>()
}