Day 1
This commit is contained in:
commit
d4f345808c
|
@ -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"
|
|
@ -0,0 +1,6 @@
|
||||||
|
[package]
|
||||||
|
name = "advent"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
File diff suppressed because it is too large
Load Diff
|
@ -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);
|
||||||
|
}
|
Loading…
Reference in New Issue