aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2012-02-02 23:04:43 +0000
committerSimon Tatham <anakin@pobox.com>2012-02-02 23:04:43 +0000
commite6b4800d86cfc5e1bfc5e3b5bde78a182f6fe5b2 (patch)
tree9d3844b8f81365f3aaf18a044273d97f56746659
parente3b21ef6c55ceae4eb3b6884dad6e9043ddbeaeb (diff)
downloadpuzzles-e6b4800d86cfc5e1bfc5e3b5bde78a182f6fe5b2.zip
puzzles-e6b4800d86cfc5e1bfc5e3b5bde78a182f6fe5b2.tar.gz
puzzles-e6b4800d86cfc5e1bfc5e3b5bde78a182f6fe5b2.tar.bz2
puzzles-e6b4800d86cfc5e1bfc5e3b5bde78a182f6fe5b2.tar.xz
Don't try to run solver_killer_sums on a Killer cage with only one
square. It isn't equipped for it, and will try to handle it with the 4-square case and get confused. This can come up if the DIFF_KINTERSECT pass before that split a cage, and will cause the solver to miss valid solutions; e.g. 3x3kadu#802065940985372 would generate an ambiguous puzzle before this change. [originally from svn r9402]
-rw-r--r--solo.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/solo.c b/solo.c
index 766adde..6987872 100644
--- a/solo.c
+++ b/solo.c
@@ -1473,7 +1473,7 @@ static int solver_killer_sums(struct solver_usage *usage, int b,
}
assert(nsquares > 0);
- if (nsquares > 4)
+ if (nsquares < 2 || nsquares > 4)
return 0;
if (!cage_is_region) {