90 int rect[8][8], hbound[8][8], vbound[8][8];
100 printf(".%d. ", list[rect[x][y]].x[1]);
103 printf("%d.%d ", list[rect[x][y]].x[0], list[rect[x][y]].x[2]);
106 printf(".%d. ", list[rect[x][y]].x[3]);
113 fill(int x, int y, unsigned int mask)
117 i = 9*(3*hbound[x][y]+vbound[x][y]);
118 for (j=0; j<9; i++, j++)
119 if (!(mask & (1 << list[i].id)))
121 // printf("place <%d,%d> %d\n", x, y, list[i].id);
123 // if (hbound[x][y] != list[i].x[0] ||
124 // vbound[x][y] != list[i].x[1]) puts("BUG!!!");
125 hbound[x][y+1] = list[i].x[2];
126 vbound[x+1][y] = list[i].x[3];
133 if (hbound[x][y+1] != 2)
144 fill(x,y+1,mask | (1 << list[i].id));
150 fill(x+1,1,mask | (1 << list[i].id));
153 fill(x,y+1,mask | (1 << list[i].id));
158 main(int argc, char **argv)