Add an even more evil (!) game mode, in which it's not made
[sgt/puzzles] / latin.c
diff --git a/latin.c b/latin.c
index 34c06c4..a1117e0 100644 (file)
--- a/latin.c
+++ b/latin.c
  * Solver.
  */
 
+#ifdef STANDALONE_SOLVER
+int solver_show_working, solver_recurse_depth;
+#endif
+
 /*
  * Function called when we are certain that a particular square has
  * a particular number in it. The y-coordinate passed in here is
@@ -100,7 +104,7 @@ int latin_solver_elim(struct latin_solver *solver, int start, int step
                 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);
@@ -290,7 +294,7 @@ int latin_solver_set(struct latin_solver *solver,
 
                                     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;
@@ -486,8 +490,8 @@ int latin_solver_forcing(struct latin_solver *solver,
                                     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;
@@ -497,7 +501,7 @@ int latin_solver_forcing(struct latin_solver *solver,
                                     }
                                     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;
@@ -580,7 +584,7 @@ int latin_solver_diff_simple(struct latin_solver *solver)
                 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;
@@ -594,7 +598,7 @@ int latin_solver_diff_simple(struct latin_solver *solver)
                 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;
@@ -608,8 +612,8 @@ int latin_solver_diff_simple(struct latin_solver *solver)
             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;
@@ -630,7 +634,7 @@ int latin_solver_diff_set(struct latin_solver *solver,
         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;
@@ -641,7 +645,7 @@ int latin_solver_diff_set(struct latin_solver *solver,
         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;
@@ -739,7 +743,7 @@ static int latin_solver_recurse
         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 ";
@@ -762,7 +766,7 @@ static int latin_solver_recurse
 #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
 
@@ -782,7 +786,7 @@ static int latin_solver_recurse
             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