diff --git a/src/day01/parse.rs b/src/day01/parse.rs index f2c7c22..790aba8 100644 --- a/src/day01/parse.rs +++ b/src/day01/parse.rs @@ -2,14 +2,13 @@ pub struct Elf(pub Vec); pub fn parse(input: &str) -> Vec { - input.trim() + input + .trim() .split("\n\n") .map(|group| { Elf(group .split('\n') - .map(|line| { - line.parse().unwrap() - }) + .map(|line| line.parse().unwrap()) .collect()) }) .collect::>() diff --git a/src/day01/part2.rs b/src/day01/part2.rs index b5be1f3..e8bf977 100644 --- a/src/day01/part2.rs +++ b/src/day01/part2.rs @@ -1,10 +1,12 @@ use crate::parse; pub fn part2(input: &[parse::Elf]) -> usize { - input + let mut input = input .iter() .map(|elf| elf.0.iter().sum::()) - // not sure what to do next here, how do I get the 3 max values from here? + .collect::>(); + input.sort_unstable(); + input[input.len() - 3..].iter().sum() } #[cfg(test)] diff --git a/src/day01/solve.rs b/src/day01/solve.rs index 0ca5912..8998253 100644 --- a/src/day01/solve.rs +++ b/src/day01/solve.rs @@ -1,6 +1,6 @@ +mod parse; mod part1; mod part2; -mod parse; fn main() { let _input = include_str!("./input.txt");