Day one
This commit is contained in:
27
day-01-rust/src/task1.rs
Normal file
27
day-01-rust/src/task1.rs
Normal file
@@ -0,0 +1,27 @@
|
||||
use std::str::FromStr;
|
||||
|
||||
pub fn run(input: &str) {
|
||||
let mut first = Vec::<i64>::new();
|
||||
let mut second = Vec::<i64>::new();
|
||||
for line in input.split('\n') {
|
||||
if let Some((first_part, second_part)) = line.split_once(" ") {
|
||||
match i64::from_str(first_part) {
|
||||
Ok(n) => first.push(n),
|
||||
Err(err) => {
|
||||
eprintln!("Failed to parse first number from {}: {}", first_part, err);
|
||||
}
|
||||
}
|
||||
match i64::from_str(second_part) {
|
||||
Ok(n) => second.push(n),
|
||||
Err(err) => {
|
||||
eprintln!("Failed to parse second number from {}: {}", second_part, err);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
first.sort();
|
||||
second.sort();
|
||||
let sum = first.iter().zip(second.iter()).map(|(a, b)| a.abs_diff(*b)).sum::<u64>();
|
||||
println!("Total difference: {}", sum);
|
||||
}
|
||||
Reference in New Issue
Block a user