- /*
- * I'd like to write `continue;' inside each of the
- * following loops, so that the solver returns here after
- * making some progress. However, I can't specify that I
- * want to continue an outer loop rather than the innermost
- * one, so I'm apologetically resorting to a goto.
- */
- cont:
- latin_solver_debug(solver->cube, solver->o);
-
- ret = latin_solver_diff_simple(solver);
- if (ret < 0) {
- diff = diff_impossible;
- goto got_result;
- } else if (ret > 0) {
- diff = max(diff, diff_simple);
- goto cont;
- }
-
- if (maxdiff <= diff_simple)
- break;
-
- ret = latin_solver_diff_set(solver, scratch, 0);
- if (ret < 0) {
- diff = diff_impossible;
- goto got_result;
- } else if (ret > 0) {
- diff = max(diff, diff_set);
- goto cont;
- }