mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-23 00:42:13 -07:00
latin.c: dump every solution found during recursion.
In solver_show_working mode, we were logging all the deductions, guesswork and backtracking, but not printing out the actual solution (if any) reached at the end of each branch of the tree.
This commit is contained in:
23
latin.c
23
latin.c
@ -964,13 +964,30 @@ static int latin_solver_top(struct latin_solver *solver, int maxdiff,
|
|||||||
got_result:
|
got_result:
|
||||||
|
|
||||||
#ifdef STANDALONE_SOLVER
|
#ifdef STANDALONE_SOLVER
|
||||||
if (solver_show_working)
|
if (solver_show_working) {
|
||||||
|
if (diff != diff_impossible && diff != diff_unfinished &&
|
||||||
|
diff != diff_ambiguous) {
|
||||||
|
int x, y;
|
||||||
|
|
||||||
|
printf("%*sone solution found:\n", solver_recurse_depth*4, "");
|
||||||
|
|
||||||
|
for (y = 0; y < solver->o; y++) {
|
||||||
|
printf("%*s", solver_recurse_depth*4+1, "");
|
||||||
|
for (x = 0; x < solver->o; x++) {
|
||||||
|
int val = solver->grid[y*solver->o+x];
|
||||||
|
assert(val);
|
||||||
|
printf(" %s", solver->names[val-1]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
printf("%*s%s found\n",
|
printf("%*s%s found\n",
|
||||||
solver_recurse_depth*4, "",
|
solver_recurse_depth*4, "",
|
||||||
diff == diff_impossible ? "no solution (impossible)" :
|
diff == diff_impossible ? "no solution (impossible)" :
|
||||||
diff == diff_unfinished ? "no solution (unfinished)" :
|
diff == diff_unfinished ? "no solution (unfinished)" :
|
||||||
diff == diff_ambiguous ? "multiple solutions" :
|
"multiple solutions");
|
||||||
"one solution");
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
latin_solver_free_scratch(scratch);
|
latin_solver_free_scratch(scratch);
|
||||||
|
Reference in New Issue
Block a user