#include #include #define SIZE 9 bool xy[SIZE][SIZE]; bool xz[SIZE][SIZE]; bool yz[SIZE][SIZE]; bool zs[SIZE][SIZE]; #define SQUARE(X,Y) ((X/3)+(Y/3)*3) void iset(int x, int y, int z) { xy[x][y] = false; xz[x][z] = false; yz[y][z] = false; zs[z][SQUARE(x,y)] = false; } int main(int argc, char *argv[]) { for (int i = 0; i < SIZE; i++) for (int j = 0; j < SIZE; j++) xy[i][j] = xz[i][j] = yz[i][j] = zs[i][j] = true; for (int i = 0; i < SIZE; i++) { char buffer[1000]; fgets(buffer, 99, stdin); for (int j = 0; j < SIZE; j++) { if (isdigit(buffer[j])) iset(i,j,buffer[j]-'1'); } } for (int x = 0; x < SIZE; x++) for (int y = 0; y < SIZE; y++) for (int z = 0; z < SIZE; z++) if (xy[x][y] && xz[x][z] && yz[y][z]) { int xb, yb, zb, sb; for (xb = 0; xb < SIZE; xb++) for (yb = 0; yb < SIZE; yb++) if (xy[xb][yb]) printf("%d", xb == x && yb == y ? 1 : 0); for (xb = 0; xb < SIZE; xb++) for (zb = 0; zb < SIZE; zb++) if (xz[xb][zb]) printf("%d", xb == x && zb == z ? 1 : 0); for (yb = 0; yb < SIZE; yb++) for (zb = 0; zb < SIZE; zb++) if (yz[yb][zb]) printf("%d", yb == y && zb == z ? 1 : 0); for (zb = 0; zb < SIZE; zb++) for (sb = 0; sb < SIZE; sb++) if (zs[zb][sb] ) printf("%d", zb == z && sb == SQUARE(x,y) ? 1 : 0); printf(" %d,%d,%d\n", x+1, y+1, z+1); } return 0; }