01
This commit is contained in:
Generated
+7
@@ -0,0 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "day_01"
|
||||
version = "0.1.0"
|
||||
@@ -0,0 +1,6 @@
|
||||
[package]
|
||||
name = "day_01"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
@@ -0,0 +1,6 @@
|
||||
3 4
|
||||
4 3
|
||||
2 5
|
||||
1 3
|
||||
3 9
|
||||
3 3
|
||||
+1000
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,52 @@
|
||||
use std::{collections::HashMap, fs::read_to_string};
|
||||
|
||||
fn main() {
|
||||
part_01();
|
||||
part_02();
|
||||
}
|
||||
|
||||
fn part_02() {
|
||||
let mut left = vec![];
|
||||
let mut right = HashMap::new();
|
||||
|
||||
read_to_string("input.txt")
|
||||
.unwrap()
|
||||
.lines()
|
||||
.for_each(|line| {
|
||||
let mut iter = line.split_whitespace();
|
||||
left.push(iter.next().unwrap().parse::<isize>().unwrap());
|
||||
right
|
||||
.entry(iter.next().unwrap().parse::<isize>().unwrap())
|
||||
.and_modify(|e| *e += 1)
|
||||
.or_insert(1);
|
||||
});
|
||||
|
||||
let mut sum = 0;
|
||||
for number in left {
|
||||
sum += number * *right.entry(number).or_default();
|
||||
}
|
||||
println!("{sum}");
|
||||
}
|
||||
|
||||
fn part_01() {
|
||||
let mut left = vec![];
|
||||
let mut right = vec![];
|
||||
read_to_string("input.txt")
|
||||
.unwrap()
|
||||
.lines()
|
||||
.for_each(|line| {
|
||||
let mut iter = line.split_whitespace();
|
||||
left.push(iter.next().unwrap().parse::<isize>().unwrap());
|
||||
right.push(iter.next().unwrap().parse::<isize>().unwrap());
|
||||
});
|
||||
|
||||
left.sort_unstable();
|
||||
right.sort_unstable();
|
||||
|
||||
let mut sum = 0;
|
||||
|
||||
for (l, r) in left.into_iter().zip(right) {
|
||||
sum += (l - r).abs();
|
||||
}
|
||||
println!("{sum}");
|
||||
}
|
||||
Reference in New Issue
Block a user