From 940752350bb1393fdf8f119c82273f12ebb97545 Mon Sep 17 00:00:00 2001 From: Reiner Herrmann Date: Sun, 1 Dec 2024 13:19:48 +0100 Subject: day1 solution 1 --- src/bin/day1.rs | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/bin/day1.rs diff --git a/src/bin/day1.rs b/src/bin/day1.rs new file mode 100644 index 0000000..d0c9bae --- /dev/null +++ b/src/bin/day1.rs @@ -0,0 +1,42 @@ +static DAY: u8 = 1; + +fn main() { + let input = advent::read_lines(DAY); + println!("{DAY}a: {}", list_distance(&input)); + println!("{DAY}b: {}", 0); +} + +fn list_distance(numbers: &[String]) -> u32 { + let mut list1 = Vec::new(); + let mut list2 = Vec::new(); + for pair in numbers { + let (number1, number2) = pair.split_once(" ").unwrap(); + list1.push(number1.parse::().unwrap()); + list2.push(number2.parse::().unwrap()); + } + list1.sort(); + list2.sort(); + + list1.iter() + .enumerate() + .map(|(i, number1)| number1.abs_diff(list2[i])) + .sum() +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test() { + let input = [ + "3 4", + "4 3", + "2 5", + "1 3", + "3 9", + "3 3", + ].iter().map(|&x| String::from(x)).collect::>(); + assert_eq!(list_distance(&input), 11); + } +} -- cgit v1.2.3