diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2024-10-10 14:30:39 +0200 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2024-10-10 14:30:39 +0200 |
| commit | f8d247c53c3c3bd94fed645b5b47a9096cadc123 (patch) | |
| tree | 7a62cc7322ea8175a7df9b655d4a9d5e026a004a /shell.c | |
| parent | 2e93de4ad102973961cb24d5b91f0c299763299f (diff) | |
| download | nissy-core-f8d247c53c3c3bd94fed645b5b47a9096cadc123.tar.gz nissy-core-f8d247c53c3c3bd94fed645b5b47a9096cadc123.zip | |
Removed "options" from solver selection
Now the solver name fully determines the solver (and options)
to be used. For example, now one must specify "h48h0k4" as the
name of the solver.
This PR also fixes a couple of things in tools.
Diffstat (limited to 'shell.c')
| -rw-r--r-- | shell.c | 32 |
1 files changed, 9 insertions, 23 deletions
| @@ -23,7 +23,6 @@ | |||
| 23 | #define FLAG_MOVES "-moves" | 23 | #define FLAG_MOVES "-moves" |
| 24 | #define FLAG_TRANS "-trans" | 24 | #define FLAG_TRANS "-trans" |
| 25 | #define FLAG_SOLVER "-solver" | 25 | #define FLAG_SOLVER "-solver" |
| 26 | #define FLAG_OPTIONS "-options" | ||
| 27 | #define FLAG_NISSTYPE "-nisstype" | 26 | #define FLAG_NISSTYPE "-nisstype" |
| 28 | #define FLAG_MINMOVES "-m" | 27 | #define FLAG_MINMOVES "-m" |
| 29 | #define FLAG_MAXMOVES "-M" | 28 | #define FLAG_MAXMOVES "-M" |
| @@ -50,7 +49,6 @@ typedef struct { | |||
| 50 | char *str_moves; | 49 | char *str_moves; |
| 51 | char *str_trans; | 50 | char *str_trans; |
| 52 | char *str_solver; | 51 | char *str_solver; |
| 53 | char *str_options; /* TODO: remove, use only solver */ | ||
| 54 | char *str_nisstype; /* TODO: remove, use flags */ | 52 | char *str_nisstype; /* TODO: remove, use flags */ |
| 55 | int8_t minmoves; | 53 | int8_t minmoves; |
| 56 | int8_t maxmoves; | 54 | int8_t maxmoves; |
| @@ -87,7 +85,6 @@ static bool set_str_format_out(int, char **, args_t *); | |||
| 87 | static bool set_str_moves(int, char **, args_t *); | 85 | static bool set_str_moves(int, char **, args_t *); |
| 88 | static bool set_str_trans(int, char **, args_t *); | 86 | static bool set_str_trans(int, char **, args_t *); |
| 89 | static bool set_str_solver(int, char **, args_t *); | 87 | static bool set_str_solver(int, char **, args_t *); |
| 90 | static bool set_str_options(int, char **, args_t *); | ||
| 91 | static bool set_str_nisstype(int, char **, args_t *); | 88 | static bool set_str_nisstype(int, char **, args_t *); |
| 92 | static bool set_minmoves(int, char **, args_t *); | 89 | static bool set_minmoves(int, char **, args_t *); |
| 93 | static bool set_maxmoves(int, char **, args_t *); | 90 | static bool set_maxmoves(int, char **, args_t *); |
| @@ -113,7 +110,6 @@ struct { | |||
| 113 | OPTION(FLAG_MOVES, 1, set_str_moves), | 110 | OPTION(FLAG_MOVES, 1, set_str_moves), |
| 114 | OPTION(FLAG_TRANS, 1, set_str_trans), | 111 | OPTION(FLAG_TRANS, 1, set_str_trans), |
| 115 | OPTION(FLAG_SOLVER, 1, set_str_solver), | 112 | OPTION(FLAG_SOLVER, 1, set_str_solver), |
| 116 | OPTION(FLAG_OPTIONS, 1, set_str_options), /* TODO: remove, use only solver */ | ||
| 117 | OPTION(FLAG_NISSTYPE, 1, set_str_nisstype), /* TODO: remove, use flags */ | 113 | OPTION(FLAG_NISSTYPE, 1, set_str_nisstype), /* TODO: remove, use flags */ |
| 118 | OPTION(FLAG_MINMOVES, 1, set_minmoves), | 114 | OPTION(FLAG_MINMOVES, 1, set_minmoves), |
| 119 | OPTION(FLAG_MAXMOVES, 1, set_maxmoves), | 115 | OPTION(FLAG_MAXMOVES, 1, set_maxmoves), |
| @@ -183,21 +179,21 @@ struct { | |||
| 183 | ), | 179 | ), |
| 184 | COMMAND( | 180 | COMMAND( |
| 185 | "datasize", | 181 | "datasize", |
| 186 | "datasize " FLAG_SOLVER " SOLVER " FLAG_OPTIONS " OPTIONS", | 182 | "datasize " FLAG_SOLVER " SOLVER", |
| 187 | "Return the size in bytes of the data table used by " | 183 | "Return the size in bytes of the data table used by " |
| 188 | "SOLVER when called with the given OPTIONS.", | 184 | "SOLVER when called with the given OPTIONS.", |
| 189 | datasize_exec | 185 | datasize_exec |
| 190 | ), | 186 | ), |
| 191 | COMMAND( | 187 | COMMAND( |
| 192 | "gendata", | 188 | "gendata", |
| 193 | "gendata " FLAG_SOLVER " SOLVER " FLAG_OPTIONS " OPTIONS", | 189 | "gendata " FLAG_SOLVER " SOLVER", |
| 194 | "Generate the data table used by " | 190 | "Generate the data table used by " |
| 195 | "SOLVER when called with the given OPTIONS.", | 191 | "SOLVER when called with the given OPTIONS.", |
| 196 | gendata_exec | 192 | gendata_exec |
| 197 | ), | 193 | ), |
| 198 | COMMAND( | 194 | COMMAND( |
| 199 | "solve", | 195 | "solve", |
| 200 | "solve " FLAG_SOLVER " SOLVER " FLAG_OPTIONS " OPTIONS " | 196 | "solve " FLAG_SOLVER " SOLVER" |
| 201 | "[" FLAG_MINMOVES " n] [" FLAG_MAXMOVES " N] " | 197 | "[" FLAG_MINMOVES " n] [" FLAG_MAXMOVES " N] " |
| 202 | FLAG_CUBE " CUBE", | 198 | FLAG_CUBE " CUBE", |
| 203 | "Solve the given CUBE using SOLVER with the given OPTIONS, " | 199 | "Solve the given CUBE using SOLVER with the given OPTIONS, " |
| @@ -357,7 +353,7 @@ datasize_exec(args_t *args) | |||
| 357 | { | 353 | { |
| 358 | int64_t ret; | 354 | int64_t ret; |
| 359 | 355 | ||
| 360 | ret = nissy_datasize(args->str_solver, args->str_options); | 356 | ret = nissy_datasize(args->str_solver); |
| 361 | if (ret < 0) | 357 | if (ret < 0) |
| 362 | fprintf(stderr, "Unknown error (make sure solver is valid)\n"); | 358 | fprintf(stderr, "Unknown error (make sure solver is valid)\n"); |
| 363 | printf("%" PRId64 "\n", ret); | 359 | printf("%" PRId64 "\n", ret); |
| @@ -389,7 +385,7 @@ gendata_exec(args_t *args) | |||
| 389 | return -2; | 385 | return -2; |
| 390 | } | 386 | } |
| 391 | 387 | ||
| 392 | size = nissy_datasize(args->str_solver, args->str_options); | 388 | size = nissy_datasize(args->str_solver); |
| 393 | 389 | ||
| 394 | if (size < 0) { | 390 | if (size < 0) { |
| 395 | fprintf(stderr, | 391 | fprintf(stderr, |
| @@ -401,7 +397,7 @@ gendata_exec(args_t *args) | |||
| 401 | 397 | ||
| 402 | buf = malloc(size); | 398 | buf = malloc(size); |
| 403 | 399 | ||
| 404 | ret = nissy_gendata(args->str_solver, args->str_options, buf); | 400 | ret = nissy_gendata(args->str_solver, buf); |
| 405 | if (ret < 0) { | 401 | if (ret < 0) { |
| 406 | fprintf(stderr, "Unknown error in generating data\n"); | 402 | fprintf(stderr, "Unknown error in generating data\n"); |
| 407 | fclose(file); | 403 | fclose(file); |
| @@ -476,7 +472,7 @@ solve_exec(args_t *args) | |||
| 476 | return -1; | 472 | return -1; |
| 477 | } | 473 | } |
| 478 | 474 | ||
| 479 | size = nissy_datasize(args->str_solver, args->str_options); | 475 | size = nissy_datasize(args->str_solver); |
| 480 | buf = malloc(size); | 476 | buf = malloc(size); |
| 481 | read = fread(buf, size, 1, file); | 477 | read = fread(buf, size, 1, file); |
| 482 | fclose(file); | 478 | fclose(file); |
| @@ -488,9 +484,8 @@ solve_exec(args_t *args) | |||
| 488 | } | 484 | } |
| 489 | 485 | ||
| 490 | ret = nissy_solve( | 486 | ret = nissy_solve( |
| 491 | args->cube, args->str_solver, args->str_options, args->str_nisstype, | 487 | args->cube, args->str_solver, args->str_nisstype, args->minmoves, |
| 492 | args->minmoves, args->maxmoves, args->maxsolutions, args->optimal, | 488 | args->maxmoves, args->maxsolutions, args->optimal, buf, solutions); |
| 493 | buf, solutions); | ||
| 494 | 489 | ||
| 495 | free(buf); | 490 | free(buf); |
| 496 | 491 | ||
| @@ -545,7 +540,6 @@ parse_args(int argc, char **argv, args_t *args) | |||
| 545 | .str_moves = "", | 540 | .str_moves = "", |
| 546 | .str_trans = "", | 541 | .str_trans = "", |
| 547 | .str_solver = "", | 542 | .str_solver = "", |
| 548 | .str_options = "", | ||
| 549 | .str_nisstype = "", | 543 | .str_nisstype = "", |
| 550 | .minmoves = 0, | 544 | .minmoves = 0, |
| 551 | .maxmoves = 20, | 545 | .maxmoves = 20, |
| @@ -703,14 +697,6 @@ set_str_solver(int argc, char **argv, args_t *args) | |||
| 703 | } | 697 | } |
| 704 | 698 | ||
| 705 | static bool | 699 | static bool |
| 706 | set_str_options(int argc, char **argv, args_t *args) | ||
| 707 | { | ||
| 708 | args->str_options = argv[0]; | ||
| 709 | |||
| 710 | return true; | ||
| 711 | } | ||
| 712 | |||
| 713 | static bool | ||
| 714 | set_str_nisstype(int argc, char **argv, args_t *args) | 700 | set_str_nisstype(int argc, char **argv, args_t *args) |
| 715 | { | 701 | { |
| 716 | args->str_nisstype = argv[0]; | 702 | args->str_nisstype = argv[0]; |
