From ed89ecefb862818ad7ecb5e77b3f048f0ced7eb1 Mon Sep 17 00:00:00 2001 From: logaritmisk Date: Sun, 18 Dec 2016 16:58:45 +0100 Subject: [PATCH] Validate all floors. Huge speed up because fewer variants validate. --- 2016/11/src/main.rs | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/2016/11/src/main.rs b/2016/11/src/main.rs index 289de56..c1bce55 100644 --- a/2016/11/src/main.rs +++ b/2016/11/src/main.rs @@ -39,23 +39,25 @@ impl Facility { } pub fn validate(&self) -> bool { - let mut generators = HashSet::new(); - let mut microchips = HashSet::new(); + for f in 0..self.top_floor + 1 { + let mut generators = HashSet::new(); + let mut microchips = HashSet::new(); - for (i, &(g, m)) in self.components.iter().enumerate() { - if g == self.elevator { - generators.insert(i); + for (i, &(g, m)) in self.components.iter().enumerate() { + if g == f { + generators.insert(i); + } + if m == f { + microchips.insert(i); + } } - if m == self.elevator { - microchips.insert(i); - } - } - if !generators.is_empty() { - let diff = microchips.difference(&generators).collect::>(); + if !generators.is_empty() { + let diff = microchips.difference(&generators).collect::>(); - if !diff.is_empty() { - return false; + if !diff.is_empty() { + return false; + } } }