vprintf(fmt, ap);
va_end(ap);
printf(":\n%*s placing %d at (%d,%d)\n",
- solver_recurse_depth*4, "", n, x, YUNTRANS(y));
+ solver_recurse_depth*4, "", n, x+1, YUNTRANS(y)+1);
}
#endif
latin_solver_place(solver, x, y, n);
printf("%*s ruling out %d at (%d,%d)\n",
solver_recurse_depth*4, "",
- pn, px, YUNTRANS(py));
+ pn, px+1, YUNTRANS(py)+1);
}
#endif
progress = TRUE;
xl = xx;
yl = yy;
while (1) {
- printf("%s(%d,%d)", sep, xl,
- YUNTRANS(yl));
+ printf("%s(%d,%d)", sep, xl+1,
+ YUNTRANS(yl)+1);
xl = bfsprev[yl*o+xl];
if (xl < 0)
break;
}
printf("\n%*s ruling out %d at (%d,%d)\n",
solver_recurse_depth*4, "",
- orign, xt, YUNTRANS(yt));
+ orign, xt+1, YUNTRANS(yt)+1);
}
#endif
cube(xt, yt, orign) = FALSE;
ret = latin_solver_elim(solver, cubepos(0,y,n), o*o
#ifdef STANDALONE_SOLVER
, "positional elimination,"
- " %d in row %d", n, YUNTRANS(y)
+ " %d in row %d", n, YUNTRANS(y)+1
#endif
);
if (ret != 0) return ret;
ret = latin_solver_elim(solver, cubepos(x,0,n), o
#ifdef STANDALONE_SOLVER
, "positional elimination,"
- " %d in column %d", n, x
+ " %d in column %d", n, x+1
#endif
);
if (ret != 0) return ret;
if (!solver->grid[YUNTRANS(y)*o+x]) {
ret = latin_solver_elim(solver, cubepos(x,y,1), 1
#ifdef STANDALONE_SOLVER
- , "numeric elimination at (%d,%d)", x,
- YUNTRANS(y)
+ , "numeric elimination at (%d,%d)",
+ x+1, YUNTRANS(y)+1
#endif
);
if (ret != 0) return ret;
for (y = 0; y < o; y++) {
ret = latin_solver_set(solver, scratch, cubepos(0,y,1), o*o, 1
#ifdef STANDALONE_SOLVER
- , "set elimination, row %d", YUNTRANS(y)
+ , "set elimination, row %d", YUNTRANS(y)+1
#endif
);
if (ret != 0) return ret;
for (x = 0; x < o; x++) {
ret = latin_solver_set(solver, scratch, cubepos(x,0,1), o, 1
#ifdef STANDALONE_SOLVER
- , "set elimination, column %d", x
+ , "set elimination, column %d", x+1
#endif
);
if (ret != 0) return ret;
if (solver_show_working) {
char *sep = "";
printf("%*srecursing on (%d,%d) [",
- solver_recurse_depth*4, "", x, y);
+ solver_recurse_depth*4, "", x+1, y+1);
for (i = 0; i < j; i++) {
printf("%s%d", sep, list[i]);
sep = " or ";
#ifdef STANDALONE_SOLVER
if (solver_show_working)
printf("%*sguessing %d at (%d,%d)\n",
- solver_recurse_depth*4, "", list[i], x, y);
+ solver_recurse_depth*4, "", list[i], x+1, y+1);
solver_recurse_depth++;
#endif
solver_recurse_depth--;
if (solver_show_working) {
printf("%*sretracting %d at (%d,%d)\n",
- solver_recurse_depth*4, "", list[i], x, y);
+ solver_recurse_depth*4, "", list[i], x+1, y+1);
}
#endif
/* we recurse as deep as we can, so we should never find
if (solver_show_working) {
printf("%*slink elimination, (%d,%d) > (%d,%d):\n",
solver_recurse_depth*4, "",
- link->gx, link->gy, link->lx, link->ly);
+ link->gx+1, link->gy+1, link->lx+1, link->ly+1);
printf("%*s ruling out %d at (%d,%d)\n",
solver_recurse_depth*4, "",
- j+1, link->gx, link->gy);
+ j+1, link->gx+1, link->gy+1);
}
#endif
cube(link->gx, link->gy, j+1) = FALSE;
if (solver_show_working) {
printf("%*slink elimination, (%d,%d) > (%d,%d):\n",
solver_recurse_depth*4, "",
- link->gx, link->gy, link->lx, link->ly);
+ link->gx+1, link->gy+1, link->lx+1, link->ly+1);
printf("%*s ruling out %d at (%d,%d)\n",
solver_recurse_depth*4, "",
- j+1, link->lx, link->ly);
+ j+1, link->lx+1, link->ly+1);
}
#endif
cube(link->lx, link->ly, j+1) = FALSE;
if (solver_show_working) {
printf("%*sadjacent elimination, (%d,%d):%d %s (%d,%d):\n",
solver_recurse_depth*4, "",
- x, y, grid(x, y), isadjacent ? "|" : "!|", nx, ny);
+ x+1, y+1, grid(x, y), isadjacent ? "|" : "!|", nx+1, ny+1);
printf("%*s ruling out %d at (%d,%d)\n",
- solver_recurse_depth*4, "", n+1, nx, ny);
+ solver_recurse_depth*4, "", n+1, nx+1, ny+1);
}
#endif
cube(nx, ny, n+1) = FALSE;
if (solver_show_working) {
printf("%*sadjacent possible elimination, (%d,%d) %s (%d,%d):\n",
solver_recurse_depth*4, "",
- x, y, isadjacent ? "|" : "!|", nx, ny);
+ x+1, y+1, isadjacent ? "|" : "!|", nx+1, ny+1);
printf("%*s ruling out %d at (%d,%d)\n",
- solver_recurse_depth*4, "", n+1, nx, ny);
+ solver_recurse_depth*4, "", n+1, nx+1, ny+1);
}
#endif
cube(nx, ny, n+1) = FALSE;
#ifdef STANDALONE_SOLVER
if (state->nums[loc] != latin[loc]) {
printf("inconsistency for (%d,%d): state %d latin %d\n",
- x, y, state->nums[loc], latin[loc]);
+ x+1, y+1, state->nums[loc], latin[loc]);
}
#endif
assert(state->nums[loc] == latin[loc]);
#ifdef STANDALONE_SOLVER
if (solver_show_working)
printf("gg_remove_clue: removing %d at (%d,%d)",
- state->nums[loc], x, y);
+ state->nums[loc], x+1, y+1);
#endif
state->nums[loc] = 0;
}
#ifdef STANDALONE_SOLVER
if (solver_show_working)
printf("gg_remove_clue: removing %c at (%d,%d)",
- adjthan[which].c, x, y);
+ adjthan[which].c, x+1, y+1);
#endif
state->flags[loc] &= ~adjthan[which].f;
}
#ifdef STANDALONE_SOLVER
if (solver_show_working)
printf("gg_best_clue: b%d (%d,%d) new best [%d poss, %d clues].\n",
- best, x, y, nposs, nclues);
+ best, x+1, y+1, nposs, nclues);
#endif
}
}