use aoc_runner_derive::{aoc,aoc_generator}; #[aoc_generator(day1)] pub fn input_generator(input: &str) -> Vec { input.lines().map(|l| l.trim().parse()).collect::,_>>().unwrap() } #[aoc(day1, part1)] pub fn solve_part1(input: &Vec) -> usize { let mut input=input.clone(); input.sort(); for (i1,v1) in input.iter().enumerate() { if v1>&2020 {break;} for v2 in input.iter().skip(i1+1) { if (v1+v2)==2020 { return v1*v2; } } } panic!("No pair summed to 20202!"); } #[aoc(day1, part2)] pub fn solve_part2(input: &Vec) -> usize { let mut input=input.clone(); input.sort(); for (i1,v1) in input.iter().enumerate() { if v1>&2020 {break;} for (i2,v2) in input.iter().enumerate().skip(i1+1) { if (v1+v2)>2020 {break;} for v3 in input.iter().skip(i2+1) { if (v1+v2+v3)==2020 { return v1*v2*v3; } } } } panic!("No triplet summed to 20202!"); }