mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 16:05:44 -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! */
|
assert(j > 0); /* we can't lose _all_ possibilities! */
|
||||||
|
|
||||||
if (j < i) {
|
if (j < i) {
|
||||||
int a, o;
|
|
||||||
done_something = TRUE;
|
done_something = TRUE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -703,12 +702,16 @@ static int net_solver(int w, int h, unsigned char *tiles,
|
|||||||
*/
|
*/
|
||||||
while (j < 4)
|
while (j < 4)
|
||||||
tilestate[(y*w+x) * 4 + j++] = 255;
|
tilestate[(y*w+x) * 4 + j++] = 255;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now go through them again and see if we've
|
* Now go through the tile orientations again and see
|
||||||
* deduced anything new about any edges.
|
* if we've deduced anything new about any edges.
|
||||||
*/
|
*/
|
||||||
|
{
|
||||||
|
int a, o;
|
||||||
a = 0xF; o = 0;
|
a = 0xF; o = 0;
|
||||||
|
|
||||||
for (i = 0; i < 4 && tilestate[(y*w+x) * 4 + i] != 255; i++) {
|
for (i = 0; i < 4 && tilestate[(y*w+x) * 4 + i] != 255; i++) {
|
||||||
a &= tilestate[(y*w+x) * 4 + i];
|
a &= tilestate[(y*w+x) * 4 + i];
|
||||||
o |= tilestate[(y*w+x) * 4 + i];
|
o |= tilestate[(y*w+x) * 4 + i];
|
||||||
|
Reference in New Issue
Block a user