This commit is contained in:
sepia 2024-12-01 12:51:47 -06:00
commit d4f345808c
4 changed files with 1048 additions and 0 deletions

7
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 = "advent"
version = "0.1.0"

6
Cargo.toml Normal file
View File

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

1001
res/puzzle_1.txt Normal file

File diff suppressed because it is too large Load Diff

34
src/main.rs Normal file
View File

@ -0,0 +1,34 @@
use std::fs;
fn main() {
let puzzle_input = fs::read_to_string("res/puzzle_1.txt").unwrap();
let (mut left, mut right): (Vec<u64>, Vec<u64>) = puzzle_input
.lines()
.filter(|line| !line.is_empty())
.map(|line| {
let nums: Vec<&str> = line.split_whitespace().collect();
(
nums[0].parse::<u64>().expect("Invalid left number"),
nums[1].parse::<u64>().expect("Invalid right number")
)
})
.unzip();
println!("Found {} number pairs.", left.len());
left.sort();
right.sort();
let differences: u64 = left.iter()
.zip(right.iter())
.map(|(a, b)| if a > b { a - b } else { b - a })
.sum();
println!("{}", differences);
let similarity: u64 = left.iter()
.map(|a| {
let occurences = right.iter().filter(|b| a == *b).count();
a * occurences as u64
})
.sum();
println!("{}", similarity);
}