aboutsummaryrefslogtreecommitdiff
path: root/src/nissy.c
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2025-03-09 07:43:37 +0100
committerSebastiano Tronto <sebastiano@tronto.net>2025-03-09 07:43:37 +0100
commit11e6aeeaf5f08839c6effb8f68710081acf491bf (patch)
tree8aab442a637fd35bb457946926fd9bc749ee0467 /src/nissy.c
parent110e079f81277b40ec76be0b86b074a632496109 (diff)
downloadnissy-core-11e6aeeaf5f08839c6effb8f68710081acf491bf.tar.gz
nissy-core-11e6aeeaf5f08839c6effb8f68710081acf491bf.zip
Working (?) version of coordinate solver
Diffstat (limited to '')
-rw-r--r--src/nissy.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/nissy.c b/src/nissy.c
index ffda4b3..ed1d3f4 100644
--- a/src/nissy.c
+++ b/src/nissy.c
@@ -451,14 +451,16 @@ nissy_gendata_unsafe(
451 return NISSY_ERROR_DATA; 451 return NISSY_ERROR_DATA;
452 } 452 }
453 453
454 arg.buf_size = data_size;
455 arg.buf = data;
456 if (!strncmp(solver, "h48", 3)) { 454 if (!strncmp(solver, "h48", 3)) {
455 arg.buf_size = data_size;
456 arg.buf = data;
457 parse_ret = parse_h48_solver(solver, &arg.h, &arg.k); 457 parse_ret = parse_h48_solver(solver, &arg.h, &arg.k);
458 arg.maxdepth = 20; 458 arg.maxdepth = 20;
459 if (parse_ret != NISSY_OK) 459 if (parse_ret != NISSY_OK)
460 return parse_ret; 460 return parse_ret;
461 return gendata_h48(&arg); 461 return gendata_h48(&arg);
462 } else if (!strncmp(solver, "coord_", 6)) {
463 return gendata_coord_dispatch(solver+6, data);
462 } else { 464 } else {
463 LOG("gendata: unknown solver %s\n", solver); 465 LOG("gendata: unknown solver %s\n", solver);
464 return NISSY_ERROR_INVALID_SOLVER; 466 return NISSY_ERROR_INVALID_SOLVER;
@@ -501,6 +503,7 @@ long long
501nissy_solve( 503nissy_solve(
502 const char cube[static NISSY_SIZE_B32], 504 const char cube[static NISSY_SIZE_B32],
503 const char *solver, 505 const char *solver,
506 const char *options,
504 unsigned nissflag, 507 unsigned nissflag,
505 unsigned minmoves, 508 unsigned minmoves,
506 unsigned maxmoves, 509 unsigned maxmoves,
@@ -536,6 +539,8 @@ nissy_solve(
536 return NISSY_ERROR_UNSOLVABLE_CUBE; 539 return NISSY_ERROR_UNSOLVABLE_CUBE;
537 } 540 }
538 541
542/* TODO: checks for minmoves, maxmoves, nissflag */
543
539 if (maxsols == 0) { 544 if (maxsols == 0) {
540 LOG("solve: 'maxsols' is 0, returning no solution\n"); 545 LOG("solve: 'maxsols' is 0, returning no solution\n");
541 return 0; 546 return 0;
@@ -562,11 +567,15 @@ nissy_solve(
562 567
563 if (!strncmp(solver, "h48", 3)) { 568 if (!strncmp(solver, "h48", 3)) {
564 parse_ret = parse_h48_solver(solver, &h, &k); 569 parse_ret = parse_h48_solver(solver, &h, &k);
565 if (parse_ret == NISSY_OK) 570 if (parse_ret != NISSY_OK)
566 return solve_h48(c, minmoves, maxmoves, maxsols, opt,
567 t, data_size, data, sols_size, sols, stats);
568 else
569 return parse_ret; 571 return parse_ret;
572/* TODO give warning if options is not NULL or empty? */
573 return solve_h48(c, minmoves, maxmoves, maxsols,
574 opt, t, data_size, data, sols_size, sols, stats);
575 } else if (!strncmp(solver, "coord_", 6)) {
576 return solve_coord_dispatch(c, solver + 6, options, nissflag,
577 minmoves, maxmoves, maxsols, opt, t, data_size, data,
578 sols_size, sols);
570 } else { 579 } else {
571 LOG("solve: unknown solver '%s'\n", solver); 580 LOG("solve: unknown solver '%s'\n", solver);
572 return NISSY_ERROR_INVALID_SOLVER; 581 return NISSY_ERROR_INVALID_SOLVER;

Generated with cgit - Back to sebastiano.tronto.net