shithub: puzzles

Download patch

ref: e500ef963734dcf35ffa146ee917e0e0e09c325c
parent: 1c05db3fb55cab70267a80087cd64f3da0bdfc47
author: Simon Tatham <anakin@pobox.com>
date: Thu Feb 24 03:13:32 EST 2005

Fixes in grid generation for pedantic special cases when one or both
grid dimensions are very small.

[originally from svn r5390]

--- a/pattern.c
+++ b/pattern.c
@@ -281,6 +281,15 @@
                     for (q = -1; q <= +1; q++) {
                         if (i+p < 0 || i+p >= h || j+q < 0 || j+q >= w)
                             continue;
+			/*
+			 * An additional special case not mentioned
+			 * above: if a grid dimension is 2xn then
+			 * we do not average across that dimension
+			 * at all. Otherwise a 2x2 grid would
+			 * contain four identical squares.
+			 */
+			if ((h==2 && p!=0) || (w==2 && q!=0))
+			    continue;
                         n++;
                         sx += fgrid[(i+p)*w+(j+q)];
                     }
@@ -303,7 +312,7 @@
 
     for (i = 0; i < h; i++) {
         for (j = 0; j < w; j++) {
-            retgrid[i*w+j] = (fgrid[i*w+j] > threshold ? GRID_FULL :
+            retgrid[i*w+j] = (fgrid[i*w+j] >= threshold ? GRID_FULL :
                               GRID_EMPTY);
         }
     }