aboutsummaryrefslogtreecommitdiff
path: root/src/solve.c
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano.tronto@gmail.com>2021-12-26 19:38:28 +0100
committerSebastiano Tronto <sebastiano.tronto@gmail.com>2021-12-26 19:38:28 +0100
commit975e3eafbae15b93a1a4f160dd781d359a6c717b (patch)
treedc6b05fcb57a64014c260ce43baa222386e5140f /src/solve.c
parentb82df53eb461506984eb2b6a9b53e445b75e46af (diff)
downloadnissy-975e3eafbae15b93a1a4f160dd781d359a6c717b.tar.gz
nissy-975e3eafbae15b93a1a4f160dd781d359a6c717b.zip
Added two-phase solver
Diffstat (limited to '')
-rw-r--r--src/solve.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/solve.c b/src/solve.c
index 5a72bba..cfb2bd3 100644
--- a/src/solve.c
+++ b/src/solve.c
@@ -438,3 +438,54 @@ solve(Cube cube, Step *step, SolveOptions *opts)
438 438
439 return sols; 439 return sols;
440} 440}
441
442/* TODO: make more general! */
443Alg *
444solve_2phase(Cube cube, int nthreads)
445{
446 int bestlen, newb;
447 Alg *bestalg;
448 AlgList *sols1, *sols2;
449 AlgListNode *i;
450 Cube c;
451 SolveOptions opts1, opts2;
452
453 opts1.min_moves = 0;
454 opts1.max_moves = 13;
455 opts1.max_solutions = 100;
456 opts1.nthreads = nthreads;
457 opts1.optimal = 3;
458 opts1.can_niss = false;
459 opts1.verbose = false;
460 opts1.all = true;
461
462 opts2.min_moves = 0;
463 opts2.max_moves = 19;
464 opts2.max_solutions = 1;
465 opts2.nthreads = nthreads;
466 opts2.can_niss = false;
467 opts2.verbose = false;
468
469 sols1 = solve(cube, &drany_HTM, &opts1);
470 bestalg = new_alg("");
471 bestlen = 999;
472 for (i = sols1->first; i != NULL; i = i->next) {
473 c = apply_alg(i->alg, cube);
474 sols2 = solve(c, &dranyfin_DR, &opts2);
475
476 if (sols2->len > 0) {
477 newb = i->alg->len + sols2->first->alg->len;
478 if (newb < bestlen) {
479 bestlen = newb;
480 copy_alg(i->alg, bestalg);
481 compose_alg(bestalg, sols2->first->alg);
482 }
483 }
484
485 free_alglist(sols2);
486 }
487
488 free_alglist(sols1);
489
490 return bestalg;
491}

Generated with cgit - Back to sebastiano.tronto.net