forked from LeMoonStar/AoC24
✨ Day 1
This commit is contained in:
parent
73760fbec4
commit
49c441a277
4 changed files with 38 additions and 8 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,2 +1,2 @@
|
|||
/target
|
||||
.aoc23_cache
|
||||
.aoc24_cache
|
|
@ -3,8 +3,8 @@
|
|||
[](https://adventofcode.com/2024/about)
|
||||
[](https://en.wikipedia.org/wiki/Rust_(programming_language))
|
||||
[](https://mit-license.org/)
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
> ⚠️ This README is copied from my previous years solution. It is not fully adopted to 2024 yet.
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ use super::{Answer, Day, DayImpl};
|
|||
|
||||
const CURRENT_DAY: u8 = 1;
|
||||
|
||||
type Data = Vec<u64>;
|
||||
type Data = Vec<[u64; 2]>;
|
||||
impl DayImpl<Data> for Day<CURRENT_DAY> {
|
||||
fn init_test() -> (Self, Data) {
|
||||
Self::init(include_str!("test_inputs/test01.txt"))
|
||||
|
@ -17,16 +17,40 @@ impl DayImpl<Data> for Day<CURRENT_DAY> {
|
|||
Self {},
|
||||
input
|
||||
.lines()
|
||||
.map(|v| v.parse::<u64>().expect("error while parsing input."))
|
||||
.collect(),
|
||||
.map(|v| {
|
||||
v.split_whitespace()
|
||||
.map(|v| v.trim().parse::<u64>().expect("Error during parsing"))
|
||||
.collect::<Vec<u64>>()
|
||||
.try_into()
|
||||
.expect("Error during parsing")
|
||||
})
|
||||
.collect::<Vec<[u64; 2]>>(),
|
||||
)
|
||||
}
|
||||
|
||||
fn one(&self, data: &mut Data) -> Answer {
|
||||
Answer::Number(data.len() as u64)
|
||||
let mut left = data.iter().map(|v| v[0]).collect::<Vec<u64>>();
|
||||
let mut right = data.iter().map(|v| v[1]).collect::<Vec<u64>>();
|
||||
|
||||
left.sort();
|
||||
right.sort();
|
||||
|
||||
Answer::Number(
|
||||
left.into_iter()
|
||||
.zip(right.into_iter())
|
||||
.map(|(a, b)| a.abs_diff(b))
|
||||
.sum(),
|
||||
)
|
||||
}
|
||||
|
||||
fn two(&self, data: &mut Data) -> Answer {
|
||||
Answer::Number(data.len() as u64)
|
||||
let mut left = data.iter().map(|v| v[0]).collect::<Vec<u64>>();
|
||||
let mut right = data.iter().map(|v| v[1]).collect::<Vec<u64>>();
|
||||
|
||||
Answer::Number(
|
||||
left.iter()
|
||||
.map(|v| v * right.iter().filter(|n| *n == v).count() as u64)
|
||||
.sum(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
3 4
|
||||
4 3
|
||||
2 5
|
||||
1 3
|
||||
3 9
|
||||
3 3
|
Loading…
Add table
Add a link
Reference in a new issue