diff options
Diffstat (limited to 'aoc22/day1/src/main.rs')
-rw-r--r-- | aoc22/day1/src/main.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/aoc22/day1/src/main.rs b/aoc22/day1/src/main.rs new file mode 100644 index 0000000..1754e1b --- /dev/null +++ b/aoc22/day1/src/main.rs @@ -0,0 +1,38 @@ +use std::collections::BinaryHeap; + +fn main() { + let input = lib::read_input(1); + + part1(&input); + part2(&input); +} + +fn part1(input: &str) { + let ans: usize = input + .split("\n\n") + .map(|elf| { + elf.split("\n") + .flat_map(|item| item.parse::<usize>().ok()) + .sum() + }) + .max() + .unwrap(); + + println!("{}", ans); +} + +fn part2(input: &str) { + let mut heap: BinaryHeap<usize> = input + .split("\n\n") + .map(|elf| { + elf.split("\n") + .flat_map(|item| item.parse::<usize>().ok()) + .sum() + }) + .collect(); + + println!( + "{}", + heap.pop().unwrap() + heap.pop().unwrap() + heap.pop().unwrap() + ); +} |