low memory rework for day6 part 2
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
a613072c49
commit
9136b1e64d
@ -1,5 +1,6 @@
|
|||||||
use std::fs;
|
use std::fs;
|
||||||
use std::io::BufRead;
|
use std::io::BufRead;
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
static PATH: &'static str = "../../inputs/input-day6";
|
static PATH: &'static str = "../../inputs/input-day6";
|
||||||
|
|
||||||
@ -41,15 +42,50 @@ fn part1() {
|
|||||||
println!("total: {}", x.len());
|
println!("total: {}", x.len());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn part2() {
|
fn get_total(v: &HashMap<u8, u64>) -> u64 {
|
||||||
let mut x = load_file().unwrap();
|
let mut total = 0;
|
||||||
|
|
||||||
for i in 0..256 {
|
for x in v {
|
||||||
run_day(&mut x);
|
total += x.1;
|
||||||
println!("day: {} fish: {}", i+1, x.len());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
println!("total: {}", x.len());
|
return total;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn run_day_2(v: &HashMap<u8, u64>) -> HashMap<u8, u64> {
|
||||||
|
let mut state = HashMap::new();
|
||||||
|
for i in (0..=8).rev() {
|
||||||
|
if v.contains_key(&i) {
|
||||||
|
if let Some(cnt) = v.get(&i) {
|
||||||
|
if i == 0 {
|
||||||
|
let c = state.entry(6).or_insert(0);
|
||||||
|
*c += cnt;
|
||||||
|
state.insert(8, *cnt);
|
||||||
|
} else {
|
||||||
|
state.insert(i - 1, *cnt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let x = load_file().unwrap();
|
||||||
|
|
||||||
|
let mut fish = HashMap::<u8, u64>::new();
|
||||||
|
|
||||||
|
for val in x {
|
||||||
|
let n = fish.entry(val).or_insert(0);
|
||||||
|
*n += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for _ in 0..256 {
|
||||||
|
fish = run_day_2(&fish);
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("total: {}", get_total(&fish));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user