From ae4b77317205b7604754e4591e4ca295df7dd2d7 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Sun, 22 Dec 2019 16:52:38 +0100 Subject: Add statistics --- src/solvers/intuitive.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/solvers/intuitive.rs b/src/solvers/intuitive.rs index f4deb8c..77f63e5 100644 --- a/src/solvers/intuitive.rs +++ b/src/solvers/intuitive.rs @@ -15,6 +15,8 @@ pub struct NormalSolver { // used during row creation, will get deprecated static mut COUNT: u32 = 0; +static mut TRIES: u32 = 0; +static mut SOLUTIONS: u32 = 0; /// Save the current state for each row #[derive(Clone, Copy)] @@ -94,6 +96,7 @@ impl NormalSolver { 0, ((0..self.h).collect::>()).as_ref(), ); + unsafe { println!("tries: {}\nsolutions: {}", TRIES, SOLUTIONS) } } fn permute(&mut self, up: usize, index: usize, numbers: &[u32]) { @@ -115,10 +118,13 @@ impl NormalSolver { } fn check_perm(&mut self, nums: &[u32]) -> bool { + unsafe { + TRIES += 1; + } let mut sums = vec![self.w; self.w as usize]; for (i, num) in nums.iter().enumerate() { let mut sum = 0; - for n in self.permutations[*num as usize][..=self.h as usize].iter() { + for n in self.permutations[*num as usize][..(self.n - 1) as usize].iter() { sum += *n as usize; if sums[sum - 1] != self.w { return false; @@ -126,6 +132,9 @@ impl NormalSolver { sums[sum - 1] = i as u32; } } + unsafe { + SOLUTIONS += 1; + } //println!("{:?}", sums); GapHeights::from_heights(sums.iter().map(|x| *x as u32).collect()).output(self.n, self.h); //.as_stone_wall(self.n) -- cgit v1.2.3-54-g00ecf