shithub: puzzles

Download patch

ref: ba3247bb927b412f67365264914740f75a35825b
parent: 0066cdd62aea5bde96903682e7fbdadfd5fd08d9
author: Simon Tatham <anakin@pobox.com>
date: Sun May 22 08:14:39 EDT 2005

Another tweak to the solver to make it handle blank tiles correctly.
The previous checkin stopped it choking on them, but it didn't
actually manage to _deduce_ that all the edges bordering them had to
be closed. Now it does better.

[originally from svn r5829]

--- a/net.c
+++ b/net.c
@@ -694,7 +694,6 @@
 	    assert(j > 0);	       /* we can't lose _all_ possibilities! */
 
 	    if (j < i) {
-		int a, o;
 		done_something = TRUE;
 
 		/*
@@ -703,12 +702,16 @@
 		 */
 		while (j < 4)
 		    tilestate[(y*w+x) * 4 + j++] = 255;
+	    }
 
-		/*
-		 * Now go through them again and see if we've
-		 * deduced anything new about any edges.
-		 */
+	    /*
+	     * Now go through the tile orientations again and see
+	     * if we've deduced anything new about any edges.
+	     */
+	    {
+		int a, o;
 		a = 0xF; o = 0;
+
 		for (i = 0; i < 4 && tilestate[(y*w+x) * 4 + i] != 255; i++) {
 		    a &= tilestate[(y*w+x) * 4 + i];
 		    o |= tilestate[(y*w+x) * 4 + i];