Solution Day 1

This commit is contained in:
Markus Brueckner 2024-12-03 13:31:36 +01:00
parent 651fc8065d
commit 8a13d1f072
4 changed files with 63 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
target/

7
2024/day1/Cargo.lock generated Normal file
View file

@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "day1"
version = "0.1.0"

6
2024/day1/Cargo.toml Normal file
View file

@ -0,0 +1,6 @@
[package]
name = "day1"
version = "0.1.0"
edition = "2021"
[dependencies]

49
2024/day1/src/main.rs Normal file
View file

@ -0,0 +1,49 @@
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();
}