pub fn part_1(input: &String) -> String { let elves: Vec<&str> = input.split("\n\n").collect(); let mut highest_calorie_count: u64 = 0; for meals in elves.iter() { let mut elf_calorie_count= 0; for meal in meals.split_whitespace() { elf_calorie_count += meal.parse().unwrap_or(0); } if elf_calorie_count > highest_calorie_count { highest_calorie_count = elf_calorie_count; } } format!("{highest_calorie_count}") } pub fn part_2(input: &String) -> u64 { let mut elf_calorie_counts: Vec<u64> = input.split("\n\n").map(|elf| { elf.split_whitespace().map(|meal| meal.parse().unwrap_or(0)).sum() }).collect(); elf_calorie_counts.sort_unstable(); let start = elf_calorie_counts.len() - 3; let top_3 = elf_calorie_counts.drain(start..); top_3.sum() }