mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 08:01:30 -07:00
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]
This commit is contained in:
13
net.c
13
net.c
@ -694,7 +694,6 @@ static int net_solver(int w, int h, unsigned char *tiles,
|
||||
assert(j > 0); /* we can't lose _all_ possibilities! */
|
||||
|
||||
if (j < i) {
|
||||
int a, o;
|
||||
done_something = TRUE;
|
||||
|
||||
/*
|
||||
@ -703,12 +702,16 @@ static int net_solver(int w, int h, unsigned char *tiles,
|
||||
*/
|
||||
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];
|
||||
|
Reference in New Issue
Block a user