07.rs
1 #![feature(test)] 2 3 type Input = Vec<i32>; 4 5 fn setup(input: &str) -> Input { 6 input 7 .trim() 8 .split(',') 9 .map(|x| x.parse().unwrap()) 10 .collect() 11 } 12 13 fn part1(input: &Input) -> String { 14 (0..=input.len()) 15 .map(|pos| input.iter().map(|n| (pos as i32 - *n).abs()).sum::<i32>()) 16 .min() 17 .unwrap() 18 .to_string() 19 } 20 21 fn part2(input: &Input) -> String { 22 (0..=input.len()) 23 .map(|pos| { 24 input 25 .iter() 26 .map(|n| { 27 let x = (pos as i32 - *n).abs(); 28 (x * (x + 1)) >> 1 29 }) 30 .sum::<i32>() 31 }) 32 .min() 33 .unwrap() 34 .to_string() 35 } 36 37 aoc::main!(2021, 7, ex: 1);