AoC_2020/src/day1.rs

40 lines
1.1 KiB
Rust

use aoc_runner_derive::{aoc,aoc_generator};
#[aoc_generator(day1)]
pub fn input_generator(input: &str) -> Vec<usize> {
input.lines().map(|l| l.trim().parse()).collect::<Result<Vec<usize>,_>>().unwrap()
}
#[aoc(day1, part1)]
pub fn solve_part1(input: &Vec<usize>) -> 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>) -> 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!");
}