chiark / gitweb /
Don't try to run solver_killer_sums on a Killer cage with only one
authorSimon Tatham <anakin@pobox.com>
Thu, 2 Feb 2012 23:04:43 +0000 (23:04 +0000)
committerSimon Tatham <anakin@pobox.com>
Thu, 2 Feb 2012 23:04:43 +0000 (23:04 +0000)
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]

solo.c

diff --git a/solo.c b/solo.c
index 766adde1cc374e78db6868b6596e2cd3f5f7532b..69878721a8ba396ca5f4164caca3f34bdb366d07 100644 (file)
--- 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) {