diff options
Diffstat (limited to 'src/solve.c')
| -rw-r--r-- | src/solve.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/solve.c b/src/solve.c index 931dc02..79e421d 100644 --- a/src/solve.c +++ b/src/solve.c | |||
| @@ -373,7 +373,7 @@ niss_makes_sense(DfsArg *arg) | |||
| 373 | AlgList * | 373 | AlgList * |
| 374 | solve(Cube cube, Step *step, SolveOptions *opts) | 374 | solve(Cube cube, Step *step, SolveOptions *opts) |
| 375 | { | 375 | { |
| 376 | int d; | 376 | int d, op; |
| 377 | AlgList *sols; | 377 | AlgList *sols; |
| 378 | Cube c; | 378 | Cube c; |
| 379 | 379 | ||
| @@ -396,16 +396,19 @@ solve(Cube cube, Step *step, SolveOptions *opts) | |||
| 396 | return sols; | 396 | return sols; |
| 397 | } | 397 | } |
| 398 | 398 | ||
| 399 | op = -1; | ||
| 399 | for (d = opts->min_moves; | 400 | for (d = opts->min_moves; |
| 400 | d <= opts->max_moves && | 401 | d <= opts->max_moves && |
| 401 | !(sols->len && opts->optimal_only) && | 402 | !(opts->optimal != -1 && op != -1 && opts->optimal + op < d) && |
| 402 | sols->len < opts->max_solutions; | 403 | sols->len < opts->max_solutions; |
| 403 | d++) { | 404 | d++) { |
| 404 | if (opts->verbose) | 405 | if (opts->verbose) |
| 405 | fprintf(stderr, | 406 | fprintf(stderr, |
| 406 | "Found %d solutions, searching depth %d...\n", | 407 | "Found %d solutions, searching depth %d...\n", |
| 407 | sols->len, d); | 408 | sols->len, d); |
| 408 | multidfs(c, step, opts, sols, d); | 409 | multidfs(c, step, opts, sols, d); |
| 410 | if (sols->len > 0 && op == -1) | ||
| 411 | op = d; | ||
| 409 | } | 412 | } |
| 410 | 413 | ||
| 411 | return sols; | 414 | return sols; |
