From 213fcdc1d4a0a6e9fa95eac24f902e65b03f2c4e Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 2 Dec 2022 13:40:31 -0500 Subject: [PATCH] simplify code --- 2022/src/day_1.rs | 33 +++------------------------------ 1 file changed, 3 insertions(+), 30 deletions(-) diff --git a/2022/src/day_1.rs b/2022/src/day_1.rs index ef92dbc..c9cecd7 100644 --- a/2022/src/day_1.rs +++ b/2022/src/day_1.rs @@ -2,41 +2,14 @@ advent_of_code_macro::solve_problem!( day 1, Input Vec>, parse |input: &str| { - let lines = input.split('\n'); - let mut output = vec![]; - let mut curr_elf = vec![]; - for line in lines { - if line.is_empty() { - output.push(curr_elf); - curr_elf = vec![]; - } else { - curr_elf.push(line.parse().unwrap()) - } - } - output + input.split("\n\n").map(|lines| lines.lines().map(|line| line.parse().unwrap()).collect()).collect() }, part one |data: Input| { data.iter().map(|cals| cals.iter().sum()).max().unwrap() }, part two |data: Input| { - use std::mem::swap; - let cals = data.iter().map(|cals| cals.iter().sum()).fold( - (-1, -1, -1), - |(mut first, mut second, mut third), mut curr: i32| { - if curr > first { - swap(&mut first, &mut curr); - } - if curr > second { - swap(&mut second, &mut curr); - } - if curr > third { - swap(&mut third, &mut curr); - } - - (first, second, third) - }, - ); - cals.0 + cals.1 + cals.2 + let mut cals: std::collections::BinaryHeap = data.iter().map(|cals| cals.iter().sum()).collect(); + cals.pop().unwrap() + cals.pop().unwrap() + cals.pop().unwrap() }, sample tests [24_000, 45_000], star tests [68_923, 200_044]