Solution Day 1
This commit is contained in:
parent
651fc8065d
commit
8a13d1f072
4 changed files with 63 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
target/
|
7
2024/day1/Cargo.lock
generated
Normal file
7
2024/day1/Cargo.lock
generated
Normal 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
6
2024/day1/Cargo.toml
Normal file
|
@ -0,0 +1,6 @@
|
|||
[package]
|
||||
name = "day1"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
49
2024/day1/src/main.rs
Normal file
49
2024/day1/src/main.rs
Normal 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();
|
||||
}
|
Loading…
Add table
Reference in a new issue