diff --git a/rs/src/d01.rs b/rs/src/d01.rs index 15bcc37..f5b2d33 100644 --- a/rs/src/d01.rs +++ b/rs/src/d01.rs @@ -1,22 +1,14 @@ pub fn solve(input: String) -> anyhow::Result<()> { - let mut elves = vec![]; - let mut elf = vec![]; - for line in input.lines() { - if let Ok(number) = line.trim().parse::() { - elf.push(number); - } else { - elves.push(elf); - elf = vec![]; - } - } - if !elf.is_empty() { - elves.push(elf); - } - - let mut elves = elves - .into_iter() - .map(|e| e.into_iter().sum()) - .collect::>(); + let mut elves = input + .trim() + .split("\n\n") + .map(|chunk| { + chunk + .split('\n') + .map(|n| n.parse::().unwrap()) + .sum::() + }) + .collect::>(); elves.sort_unstable(); // Part 1