summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDennis Kobert <dennis@kobert.dev>2020-01-12 11:54:45 +0100
committerDennis Kobert <dennis@kobert.dev>2020-01-12 11:54:45 +0100
commit809c4a251a3935b674571b605f2be475babe5cbb (patch)
tree49c9a12645ab8838fa01d0cda06b1917807a20c1
parent1a77aa535f4e38c26b33b56780ec9d3f7879d4e9 (diff)
Prune first stone
-rw-r--r--src/solvers/gpu/output.rs4
-rw-r--r--src/solvers/gpusolver.rs6
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],