use std::cmp::Reverse; use aoc_runner_derive::{aoc, aoc_generator}; #[aoc_generator(day1)] pub fn input_generator(input: &str) -> Vec { input .split("\n\n") .map(|chunk| { chunk .lines() .map(|line| line.trim().parse::().unwrap()) .sum() }) .collect() } #[aoc(day1, part1)] pub fn solve_part1(input: &[usize]) -> usize { input.iter().max().copied().unwrap_or(0) } #[aoc(day1, part2)] pub fn solve_part2(input: &[usize]) -> usize { let mut scores: Vec = input.to_vec(); scores.sort_by_key(|v| Reverse(*v)); scores.iter().take(3).sum() }