pub fn part_one(input: &str) -> Option { let inlines = input.split("\n"); let mut count: u32 = 0; let mut elves: Vec = vec![]; for l in inlines { match l { "" => { elves.push(count); count = 0}, _ => { count += l.parse::().unwrap() } } } let mut largest = 0; for e in elves { if e > largest { largest = e; } } Some(largest) } pub fn part_two(input: &str) -> Option { let inlines = input.split("\n"); let mut count: u32 = 0; let mut elves: Vec = vec![]; for l in inlines { match l { "" => { elves.push(count); count = 0}, _ => { count += l.parse::().unwrap() } } } elves.sort(); elves.reverse(); elves.truncate(3); Some(elves.iter().sum::()) } fn main() { let input = &advent_of_code::read_file("inputs", 1); advent_of_code::solve!(1, part_one, input); advent_of_code::solve!(2, part_two, input); } #[cfg(test)] mod tests { use super::*; #[test] fn test_part_one() { let input = advent_of_code::read_file("examples", 1); assert_eq!(part_one(&input), Some(24000)); } #[test] fn test_part_two() { let input = advent_of_code::read_file("examples", 1); assert_eq!(part_two(&input), None); } }