advent-of-code/2024/day1/src/main.rs
Markus Brueckner 8a13d1f072 Solution Day 1
2024-12-03 16:56:21 +01:00

49 lines
1.2 KiB
Rust

fn read_values() -> (Vec<i32>, Vec<i32>) {
let string = std::fs::read_to_string("./input.txt").unwrap();
let mut left_vec = vec![];
let mut right_vec = vec![];
for line in string.lines() {
let mut values = line.split_whitespace();
let left_value: i32 = values.next().unwrap().parse().unwrap();
left_vec.push(left_value);
let right_value: i32 = values.next().unwrap().parse().unwrap();
right_vec.push(right_value);
}
return (left_vec, right_vec);
}
fn task1() {
let (mut left_vec, mut right_vec) = read_values();
left_vec.sort();
right_vec.sort();
let mut sum = 0;
for idx in 0..left_vec.len() {
sum = sum + (left_vec[idx] - right_vec[idx]).abs();
}
println!("Task 1 Sum: {}", sum);
}
fn task2() {
let (left_vec, right_vec) = read_values();
let mut sum = 0;
for left_number in left_vec.iter() {
let occurences = right_vec
.iter()
.filter(|&candidate| candidate == left_number)
.count() as i32;
sum += left_number * occurences;
}
println!("Task 2 Sum: {}", sum);
}
fn main() {
task1();
task2();
}