shithub: puzzles

Download patch

ref: a79ab3494119f2544f5ad05637e629ec703be4c5
parent: 3c3368d07facee6011cd694f0afac9b1bb4c3f73
author: Simon Tatham <anakin@pobox.com>
date: Sun Dec 27 05:01:20 EST 2009

Normalise Unequal (and latin.c) so that solver diagnostics start
their coordinate from 1 rather than 0, for consistency with Solo.
(My geek instincts would rather work from 0, but I've generally
found that puzzle users sending me email tend to prefer 1.)

[originally from svn r8795]

--- a/latin.c
+++ b/latin.c
@@ -104,7 +104,7 @@
                 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);
@@ -294,7 +294,7 @@
 
                                     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;
@@ -490,8 +490,8 @@
                                     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;
@@ -501,7 +501,7 @@
                                     }
                                     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;
@@ -584,7 +584,7 @@
                 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;
@@ -598,7 +598,7 @@
                 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;
@@ -612,8 +612,8 @@
             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;
@@ -634,7 +634,7 @@
         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;
@@ -645,7 +645,7 @@
         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;
@@ -743,7 +743,7 @@
         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 ";
@@ -766,7 +766,7 @@
 #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
 
@@ -786,7 +786,7 @@
             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
--- a/unequal.c
+++ b/unequal.c
@@ -634,10 +634,10 @@
                     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;
@@ -652,10 +652,10 @@
                     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;
@@ -702,9 +702,9 @@
                     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;
@@ -766,9 +766,9 @@
                     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;
@@ -876,7 +876,7 @@
 #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]);
@@ -927,7 +927,7 @@
 #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;
         }
@@ -940,7 +940,7 @@
 #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;
         }
@@ -978,7 +978,7 @@
 #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
         }
     }