shithub: puzzles

Download patch

ref: 47e9419452a9fca895f1c84412ab1040d1aa86a5
parent: 03e455c2c625fdaad509f5cd56382b8b3bb1eb03
author: Simon Tatham <anakin@pobox.com>
date: Wed Dec 8 03:08:00 EST 2004

Game completion detection was occasionally failing to spot a
lingering GRID_UNKNOWN, causing it to declare victory too soon.

[originally from svn r4954]

--- a/pattern.c
+++ b/pattern.c
@@ -322,16 +322,16 @@
     n = 0;
 
     for (i = 0; i < len; i++) {
-        if (start[i*step] == GRID_UNKNOWN)
-            return -1;
-
         if (start[i*step] == GRID_FULL) {
             int runlen = 1;
-            while (i+runlen < len && start[(i+runlen)*step])
+            while (i+runlen < len && start[(i+runlen)*step] == GRID_FULL)
                 runlen++;
             ret[n++] = runlen;
             i += runlen;
         }
+
+        if (start[i*step] == GRID_UNKNOWN)
+            return -1;
     }
 
     return n;