diff options
author | Dennis Kobert <dennis@kobert.dev> | 2020-01-12 11:54:45 +0100 |
---|---|---|
committer | Dennis Kobert <dennis@kobert.dev> | 2020-01-12 11:54:45 +0100 |
commit | 809c4a251a3935b674571b605f2be475babe5cbb (patch) | |
tree | 49c9a12645ab8838fa01d0cda06b1917807a20c1 | |
parent | 1a77aa535f4e38c26b33b56780ec9d3f7879d4e9 (diff) |
Prune first stone
-rw-r--r-- | src/solvers/gpu/output.rs | 4 | ||||
-rw-r--r-- | 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], |