Make it more cursed lmao
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
d7d1a1d840
commit
f2f63bbc47
31
src/day06.rs
31
src/day06.rs
|
@ -1,4 +1,3 @@
|
|||
use std::collections::HashMap;
|
||||
use crate::Day;
|
||||
|
||||
pub struct Day06(Vec<u8>);
|
||||
|
@ -18,34 +17,20 @@ impl Day for Day06 {
|
|||
}
|
||||
|
||||
impl Day06 {
|
||||
|
||||
fn do_hashmap_magic(&self, days: u64) -> u64 {
|
||||
let x = self.0.clone();
|
||||
let mut hm = HashMap::<u8, u64>::new();
|
||||
let mut w: [u64; 9] = [0, 0, 0, 0, 0, 0, 0, 0, 0];
|
||||
for z in x {
|
||||
let e = hm.entry(z).or_insert(0);
|
||||
*e += 1;
|
||||
w[z as usize] += 1;
|
||||
}
|
||||
for _ in 0..days {
|
||||
let mut to_add = 0;
|
||||
for num in 0..=8 {
|
||||
if num == 0 {
|
||||
to_add = *hm.get(&0).unwrap_or(&0);
|
||||
} else {
|
||||
let entry = { *hm.get(&num).unwrap_or(&0) };
|
||||
let prev = hm.entry(num - 1).or_insert(0);
|
||||
*prev = entry;
|
||||
}
|
||||
}
|
||||
{
|
||||
let en = hm.entry(8).or_insert(0);
|
||||
*en = to_add;
|
||||
}
|
||||
{
|
||||
let en = hm.entry(6).or_insert(0);
|
||||
*en += to_add;
|
||||
}
|
||||
w = Self::foo(w);
|
||||
}
|
||||
hm.values().sum::<u64>()
|
||||
w.iter().sum()
|
||||
}
|
||||
fn foo([a, b, c, d, e, f, g, h, i]: [u64; 9]) -> [u64; 9] {
|
||||
[b, c, d, e, f, g, h + a, i, a]
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue