From ce4d6f93c8d00a56b9356d0c0d8489c28e1459df Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Sat, 25 Dec 2021 20:57:45 +0100 Subject: Added -O option for solve (specify number of moves within optimal) --- src/solve.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/solve.c') 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) AlgList * solve(Cube cube, Step *step, SolveOptions *opts) { - int d; + int d, op; AlgList *sols; Cube c; @@ -396,16 +396,19 @@ solve(Cube cube, Step *step, SolveOptions *opts) return sols; } + op = -1; for (d = opts->min_moves; d <= opts->max_moves && - !(sols->len && opts->optimal_only) && - sols->len < opts->max_solutions; + !(opts->optimal != -1 && op != -1 && opts->optimal + op < d) && + sols->len < opts->max_solutions; d++) { if (opts->verbose) fprintf(stderr, "Found %d solutions, searching depth %d...\n", sols->len, d); multidfs(c, step, opts, sols, d); + if (sols->len > 0 && op == -1) + op = d; } return sols; -- cgit v1.3