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