From 82fbdec1c74699330fb3d10e7ba0e005a3def76a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jana=20D=C3=B6nszelmann?= Date: Fri, 2 Jan 2026 15:03:54 +0100 Subject: [PATCH] minor symmetry breaking: dont hash solved towers --- src/main.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 6f7dae2..48ac66b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -319,10 +319,25 @@ impl Game { } } + fn tower_solved(tower: &Tower) -> bool { + tower + .rings + .iter() + .all(|x| x.is_some() && x == &tower.rings[0]) + } + let hash_state = |s: &[Tower]| { let mut hasher = DefaultHasher::default(); - for x in s.iter().filter(|i| i.height() != 0).enumerate() { + let num_finished_towers = s.iter().filter(|i| tower_solved(*i)).count(); + + num_finished_towers.hash(&mut hasher); + + for x in s + .iter() + .filter(|i| !tower_solved(i) && i.height() != 0) + .enumerate() + { x.hash(&mut hasher); }