diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/bin/day1.rs | 42 |
1 files changed, 42 insertions, 0 deletions
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::<u32>().unwrap()); + list2.push(number2.parse::<u32>().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::<Vec<_>>(); + assert_eq!(list_distance(&input), 11); + } +} |
