From 809c4a251a3935b674571b605f2be475babe5cbb Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Sun, 12 Jan 2020 11:54:45 +0100 Subject: Prune first stone --- src/solvers/gpu/output.rs | 4 ++-- src/solvers/gpusolver.rs | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/solvers/gpu/output.rs b/src/solvers/gpu/output.rs index 5342c1d..6bf7bcb 100644 --- a/src/solvers/gpu/output.rs +++ b/src/solvers/gpu/output.rs @@ -108,11 +108,11 @@ impl Output { loop { if let Some(walls) = self.input.read() { for wall in walls { - /*if !self.results.contains(&wall) { + if !self.results.contains(&wall) { self.result_sender .send(Message::RowResult(wall.clone())) .or_else(|_| Err(println!("Failed to transmit result back"))); - }*/ + } self.results.insert(wall); } } else { diff --git a/src/solvers/gpusolver.rs b/src/solvers/gpusolver.rs index 0ddc4a6..dc54bda 100644 --- a/src/solvers/gpusolver.rs +++ b/src/solvers/gpusolver.rs @@ -81,7 +81,11 @@ impl GpuSolver { }); } else { for j in 0..self.chunk { - new_num[index] = i * self.chunk + j; + let n_i = i * self.chunk + j; + if curr_mask & (1 << (self.permutations[n_i as usize][0] + 1)) > 0 { + continue; + } + new_num[index] = n_i; self.permute( index + 1, curr_mask | self.masks[new_num[index] as usize], -- cgit v1.2.3-54-g00ecf