2022 Day 23 Part 2
This commit is contained in:
parent
41a6478127
commit
62c2b7ac5c
1 changed files with 13 additions and 7 deletions
|
|
@ -5,7 +5,7 @@ const INPUT: &str = include_str!("../../input/day23.txt");
|
||||||
fn main() {
|
fn main() {
|
||||||
let grove = Grove::parse(INPUT);
|
let grove = Grove::parse(INPUT);
|
||||||
|
|
||||||
println!("{}", part1(grove));
|
simulate(grove);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
|
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
|
||||||
|
|
@ -144,9 +144,8 @@ struct Move {
|
||||||
to: RC,
|
to: RC,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn part1(mut grove: Grove) -> usize {
|
fn simulate(mut grove: Grove) {
|
||||||
println!("== Initial State ==\n{}", grove);
|
for round in 0.. {
|
||||||
for round in 0..10 {
|
|
||||||
let mut proposals: HashMap<RC, Vec<RC>> = HashMap::new();
|
let mut proposals: HashMap<RC, Vec<RC>> = HashMap::new();
|
||||||
for &src in &grove.grid {
|
for &src in &grove.grid {
|
||||||
let Some(dest) = grove.propose(src, round) else { continue };
|
let Some(dest) = grove.propose(src, round) else { continue };
|
||||||
|
|
@ -169,12 +168,19 @@ fn part1(mut grove: Grove) -> usize {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let done = moves.is_empty();
|
||||||
|
|
||||||
grove = grove.apply(moves);
|
grove = grove.apply(moves);
|
||||||
|
|
||||||
println!("== End of Round {} ==\n{}", round + 1, grove);
|
if round == 9 {
|
||||||
}
|
println!("Part 1: {}", grove.empty_tiles());
|
||||||
|
}
|
||||||
|
|
||||||
grove.empty_tiles()
|
if done {
|
||||||
|
println!("Part 2: {}", round + 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Grove {
|
impl Grove {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue