aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2025-08-07 17:13:49 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2025-08-07 17:13:49 +0200
commitd1747a694ea65a463d6e9b6f7408ae969a8bfff5 (patch)
tree3cc9cab0b71a3c08851a2676cf5dde392444627a
parent22282840b74d434b79e87d82e4ea075baa82a51c (diff)
downloadnissy-core-d1747a694ea65a463d6e9b6f7408ae969a8bfff5.tar.gz
nissy-core-d1747a694ea65a463d6e9b6f7408ae969a8bfff5.zip
Added solver aliases
Diffstat (limited to '')
-rw-r--r--src/nissy.c28
-rw-r--r--src/solvers/dispatch.h46
-rw-r--r--tools/401_solvetest_EO_FB/solvetest.c2
-rw-r--r--tools/402_solvetest_EO_RL/solvetest.c2
-rw-r--r--tools/403_solvetest_EO_UD/solvetest.c2
-rw-r--r--tools/404_solvetest_DR_UD/solvetest.c2
-rw-r--r--tools/405_solvetest_DR_RL/solvetest.c2
-rw-r--r--tools/406_solvetest_DR_FB/solvetest.c2
-rw-r--r--tools/407_solvetest_DRSLICE_UD/solvetest.c2
-rw-r--r--tools/408_solvetest_DRSLICE_RL/solvetest.c2
-rw-r--r--tools/409_solvetest_DRSLICE_FB/solvetest.c2
-rw-r--r--tools/410_solvetest_DREO_UD_from_FB/solvetest.c2
-rw-r--r--tools/411_solvetest_DREO_RL_from_FB/solvetest.c2
-rw-r--r--tools/412_solvetest_DREO_UD_from_RL/solvetest.c2
-rw-r--r--tools/413_solvetest_DREO_FB_from_RL/solvetest.c2
-rw-r--r--tools/414_solvetest_DREO_RL_from_UD/solvetest.c2
-rw-r--r--tools/415_solvetest_DREO_FB_from_UD/solvetest.c2
-rw-r--r--tools/416_solvetest_DRFIN_UD/solvetest.c2
-rw-r--r--tools/417_solvetest_DRFIN_RL/solvetest.c2
-rw-r--r--tools/418_solvetest_DRFIN_FB/solvetest.c2
-rw-r--r--tools/419_solvetest_HTR_from_UD/solvetest.c2
21 files changed, 72 insertions, 40 deletions
diff --git a/src/nissy.c b/src/nissy.c
index 17ef960..4bfdb56 100644
--- a/src/nissy.c
+++ b/src/nissy.c
@@ -213,15 +213,15 @@ nissy_getcube(
213STATIC long long 213STATIC long long
214nissy_dataid(const char *solver, char dataid[static NISSY_SIZE_DATAID]) 214nissy_dataid(const char *solver, char dataid[static NISSY_SIZE_DATAID])
215{ 215{
216 solver_dispatch_t *dispatch; 216 solver_dispatch_t dispatch;
217 217
218 dispatch = match_solver(solver); 218 dispatch = match_solver(solver);
219 if (dispatch == NULL) { 219 if (dispatch.prefix == NULL) {
220 LOG("[dataid] Unknown solver %s\n", solver); 220 LOG("[dataid] Unknown solver %s\n", solver);
221 return NISSY_ERROR_INVALID_SOLVER; 221 return NISSY_ERROR_INVALID_SOLVER;
222 } 222 }
223 223
224 return dispatch->dataid(solver, dataid); 224 return dispatch.dataid(dispatch.solvername, dataid);
225} 225}
226 226
227long long 227long long
@@ -255,7 +255,7 @@ nissy_gendata_unsafe(
255 unsigned char *data 255 unsigned char *data
256) 256)
257{ 257{
258 solver_dispatch_t *dispatch; 258 solver_dispatch_t dispatch;
259 259
260 if (solver == NULL) { 260 if (solver == NULL) {
261 LOG("[gendata] Error: 'solver' argument is NULL\n"); 261 LOG("[gendata] Error: 'solver' argument is NULL\n");
@@ -268,12 +268,12 @@ nissy_gendata_unsafe(
268 } 268 }
269 269
270 dispatch = match_solver(solver); 270 dispatch = match_solver(solver);
271 if (dispatch == NULL) { 271 if (dispatch.prefix == NULL) {
272 LOG("[gendata] Unknown solver %s\n", solver); 272 LOG("[gendata] Unknown solver %s\n", solver);
273 return NISSY_ERROR_INVALID_SOLVER; 273 return NISSY_ERROR_INVALID_SOLVER;
274 } 274 }
275 275
276 return dispatch->gendata(solver, data_size, data); 276 return dispatch.gendata(dispatch.solvername, data_size, data);
277} 277}
278 278
279long long 279long long
@@ -283,15 +283,15 @@ nissy_checkdata(
283 const unsigned char *data 283 const unsigned char *data
284) 284)
285{ 285{
286 solver_dispatch_t *dispatch; 286 solver_dispatch_t dispatch;
287 287
288 dispatch = match_solver(solver); 288 dispatch = match_solver(solver);
289 if (dispatch == NULL) { 289 if (dispatch.prefix == NULL) {
290 LOG("[checkdata] Unknown solver %s\n", solver); 290 LOG("[checkdata] Unknown solver %s\n", solver);
291 return NISSY_ERROR_INVALID_SOLVER; 291 return NISSY_ERROR_INVALID_SOLVER;
292 } 292 }
293 293
294 return dispatch->checkdata(solver, data_size, data); 294 return dispatch.checkdata(dispatch.solvername, data_size, data);
295} 295}
296 296
297long long 297long long
@@ -315,7 +315,7 @@ nissy_solve(
315{ 315{
316 oriented_cube_t oc; 316 oriented_cube_t oc;
317 int t; 317 int t;
318 solver_dispatch_t *dispatch; 318 solver_dispatch_t dispatch;
319 319
320 if (solver == NULL) { 320 if (solver == NULL) {
321 LOG("[solve] Error: 'solver' argument is NULL\n"); 321 LOG("[solve] Error: 'solver' argument is NULL\n");
@@ -359,13 +359,13 @@ nissy_solve(
359 } 359 }
360 360
361 dispatch = match_solver(solver); 361 dispatch = match_solver(solver);
362 if (dispatch == NULL) { 362 if (dispatch.prefix == NULL) {
363 LOG("[solve] Error: unknown solver '%s'\n", solver); 363 LOG("[solve] Error: unknown solver '%s'\n", solver);
364 return NISSY_ERROR_INVALID_SOLVER; 364 return NISSY_ERROR_INVALID_SOLVER;
365 } 365 }
366 return dispatch->solve(oc, solver, nissflag, minmoves, maxmoves, 366 return dispatch.solve(oc, dispatch.solvername, nissflag, minmoves,
367 maxsols, optimal, t, data_size, data, sols_size, sols, stats, 367 maxmoves, maxsols, optimal, t, data_size, data, sols_size, sols,
368 poll_status, poll_status_data); 368 stats, poll_status, poll_status_data);
369} 369}
370 370
371long long 371long long
diff --git a/src/solvers/dispatch.h b/src/solvers/dispatch.h
index 013468c..7e647ce 100644
--- a/src/solvers/dispatch.h
+++ b/src/solvers/dispatch.h
@@ -1,4 +1,5 @@
1typedef struct { 1typedef struct {
2 const char *solvername;
2 const char *prefix; 3 const char *prefix;
3 long long (*dataid)(const char *, char [static NISSY_SIZE_DATAID]); 4 long long (*dataid)(const char *, char [static NISSY_SIZE_DATAID]);
4 long long (*gendata)( 5 long long (*gendata)(
@@ -12,7 +13,7 @@ typedef struct {
12 int (*)(void *), void *); 13 int (*)(void *), void *);
13} solver_dispatch_t; 14} solver_dispatch_t;
14 15
15STATIC solver_dispatch_t *match_solver(const char *); 16STATIC solver_dispatch_t match_solver(const char *);
16 17
17solver_dispatch_t solver_dispatchers[] = { 18solver_dispatch_t solver_dispatchers[] = {
18{ 19{
@@ -41,20 +42,51 @@ solver_dispatch_t solver_dispatchers[] = {
41} 42}
42}; 43};
43 44
44STATIC solver_dispatch_t * 45const char *solver_aliases[][2] = {
46 { "optimal", "h48h7k2" },
47 { "eofb", "coord_EO_UF" },
48 { "eorl", "coord_EO_UR" },
49 { "eoud", "coord_EO_FD" },
50 { "drud", "coord_DR_UF" },
51 { "drrl", "coord_DR_RF" },
52 { "drfb", "coord_DR_FD" },
53 { "drudslice", "coord_DRSLICE_UF" },
54 { "drrlslice", "coord_DRSLICE_LF" },
55 { "drfbslice", "coord_DRSLICE_BU" },
56 { "drud-eofb", "coord_DREO_UF" },
57 { "drrl-eofb", "coord_DREO_RF" },
58 { "drud-eorl", "coord_DREO_UR" },
59 { "drfb-eorl", "coord_DREO_RU" },
60 { "drrl-eoud", "coord_DREO_FR" },
61 { "drfb-eoud", "coord_DREO_FD" },
62 { "drudfin", "mcoord_DRFIN_UF" },
63 { "drrlfin", "mcoord_DRFIN_LF" },
64 { "drfbfin", "mcoord_DRFIN_BU" },
65 { "htr-drud", "coord_HTR_UF" },
66 { "htr-drrl", "coord_HTR_LF" },
67 { "htr-drfb", "coord_HTR_BU" },
68 { NULL, NULL }
69};
70
71STATIC solver_dispatch_t
45match_solver(const char *name) 72match_solver(const char *name)
46{ 73{
47 const char *prefix; 74 const char *prefix;
75 solver_dispatch_t ret;
48 int i; 76 int i;
49 77
50 if (name == NULL) 78 for (i = 0; solver_aliases[i][0] != NULL; i++)
51 return NULL; 79 if (!strcmp(name, solver_aliases[i][0]))
80 return match_solver(solver_aliases[i][1]);
52 81
53 for (i = 0; solver_dispatchers[i].prefix != NULL; i++) { 82 for (i = 0; solver_dispatchers[i].prefix != NULL; i++) {
54 prefix = solver_dispatchers[i].prefix; 83 prefix = solver_dispatchers[i].prefix;
55 if (!strncmp(name, prefix, strlen(prefix))) 84 if (!strncmp(name, prefix, strlen(prefix))) {
56 return &solver_dispatchers[i]; 85 ret = solver_dispatchers[i];
86 ret.solvername = name;
87 return ret;
88 }
57 } 89 }
58 90
59 return NULL; 91 return solver_dispatchers[i];
60} 92}
diff --git a/tools/401_solvetest_EO_FB/solvetest.c b/tools/401_solvetest_EO_FB/solvetest.c
index 1d4553a..ccb28e2 100644
--- a/tools/401_solvetest_EO_FB/solvetest.c
+++ b/tools/401_solvetest_EO_FB/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "coord_EO_UF" 1#define SOLVER "eofb"
2#define NISSFLAG NISSY_NISSFLAG_ALL 2#define NISSFLAG NISSY_NISSFLAG_ALL
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/402_solvetest_EO_RL/solvetest.c b/tools/402_solvetest_EO_RL/solvetest.c
index e1c71dd..0e0312e 100644
--- a/tools/402_solvetest_EO_RL/solvetest.c
+++ b/tools/402_solvetest_EO_RL/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "coord_EO_UR" 1#define SOLVER "eorl"
2#define NISSFLAG NISSY_NISSFLAG_ALL 2#define NISSFLAG NISSY_NISSFLAG_ALL
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/403_solvetest_EO_UD/solvetest.c b/tools/403_solvetest_EO_UD/solvetest.c
index 14ec152..874ec0c 100644
--- a/tools/403_solvetest_EO_UD/solvetest.c
+++ b/tools/403_solvetest_EO_UD/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "coord_EO_FD" 1#define SOLVER "eoud"
2#define NISSFLAG NISSY_NISSFLAG_ALL 2#define NISSFLAG NISSY_NISSFLAG_ALL
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/404_solvetest_DR_UD/solvetest.c b/tools/404_solvetest_DR_UD/solvetest.c
index 5f70d7c..61761ed 100644
--- a/tools/404_solvetest_DR_UD/solvetest.c
+++ b/tools/404_solvetest_DR_UD/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "coord_DR_UF" 1#define SOLVER "drud"
2#define NISSFLAG NISSY_NISSFLAG_LINEAR 2#define NISSFLAG NISSY_NISSFLAG_LINEAR
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/405_solvetest_DR_RL/solvetest.c b/tools/405_solvetest_DR_RL/solvetest.c
index d9b6180..fd16634 100644
--- a/tools/405_solvetest_DR_RL/solvetest.c
+++ b/tools/405_solvetest_DR_RL/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "coord_DR_RF" 1#define SOLVER "drrl"
2#define NISSFLAG NISSY_NISSFLAG_LINEAR 2#define NISSFLAG NISSY_NISSFLAG_LINEAR
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/406_solvetest_DR_FB/solvetest.c b/tools/406_solvetest_DR_FB/solvetest.c
index 6491a18..dc9d8f8 100644
--- a/tools/406_solvetest_DR_FB/solvetest.c
+++ b/tools/406_solvetest_DR_FB/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "coord_DR_FD" 1#define SOLVER "drfb"
2#define NISSFLAG NISSY_NISSFLAG_LINEAR 2#define NISSFLAG NISSY_NISSFLAG_LINEAR
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/407_solvetest_DRSLICE_UD/solvetest.c b/tools/407_solvetest_DRSLICE_UD/solvetest.c
index 02e3efd..e77be2b 100644
--- a/tools/407_solvetest_DRSLICE_UD/solvetest.c
+++ b/tools/407_solvetest_DRSLICE_UD/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "coord_DRSLICE_UF" 1#define SOLVER "drudslice"
2#define NISSFLAG NISSY_NISSFLAG_NORMAL 2#define NISSFLAG NISSY_NISSFLAG_NORMAL
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/408_solvetest_DRSLICE_RL/solvetest.c b/tools/408_solvetest_DRSLICE_RL/solvetest.c
index 47efcb4..47193be 100644
--- a/tools/408_solvetest_DRSLICE_RL/solvetest.c
+++ b/tools/408_solvetest_DRSLICE_RL/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "coord_DRSLICE_LF" 1#define SOLVER "drrlslice"
2#define NISSFLAG NISSY_NISSFLAG_NORMAL 2#define NISSFLAG NISSY_NISSFLAG_NORMAL
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/409_solvetest_DRSLICE_FB/solvetest.c b/tools/409_solvetest_DRSLICE_FB/solvetest.c
index 996581c..8e330ff 100644
--- a/tools/409_solvetest_DRSLICE_FB/solvetest.c
+++ b/tools/409_solvetest_DRSLICE_FB/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "coord_DRSLICE_BU" 1#define SOLVER "drfbslice"
2#define NISSFLAG NISSY_NISSFLAG_NORMAL 2#define NISSFLAG NISSY_NISSFLAG_NORMAL
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/410_solvetest_DREO_UD_from_FB/solvetest.c b/tools/410_solvetest_DREO_UD_from_FB/solvetest.c
index fb223b4..d3361f6 100644
--- a/tools/410_solvetest_DREO_UD_from_FB/solvetest.c
+++ b/tools/410_solvetest_DREO_UD_from_FB/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "coord_DREO_UF" 1#define SOLVER "drud-eofb"
2#define NISSFLAG NISSY_NISSFLAG_LINEAR 2#define NISSFLAG NISSY_NISSFLAG_LINEAR
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/411_solvetest_DREO_RL_from_FB/solvetest.c b/tools/411_solvetest_DREO_RL_from_FB/solvetest.c
index a1182f9..428bd22 100644
--- a/tools/411_solvetest_DREO_RL_from_FB/solvetest.c
+++ b/tools/411_solvetest_DREO_RL_from_FB/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "coord_DREO_RF" 1#define SOLVER "drrl-eofb"
2#define NISSFLAG NISSY_NISSFLAG_LINEAR 2#define NISSFLAG NISSY_NISSFLAG_LINEAR
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/412_solvetest_DREO_UD_from_RL/solvetest.c b/tools/412_solvetest_DREO_UD_from_RL/solvetest.c
index 7fd8dfd..7954272 100644
--- a/tools/412_solvetest_DREO_UD_from_RL/solvetest.c
+++ b/tools/412_solvetest_DREO_UD_from_RL/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "coord_DREO_UR" 1#define SOLVER "drud-eorl"
2#define NISSFLAG NISSY_NISSFLAG_LINEAR 2#define NISSFLAG NISSY_NISSFLAG_LINEAR
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/413_solvetest_DREO_FB_from_RL/solvetest.c b/tools/413_solvetest_DREO_FB_from_RL/solvetest.c
index ab02fb7..917e8d7 100644
--- a/tools/413_solvetest_DREO_FB_from_RL/solvetest.c
+++ b/tools/413_solvetest_DREO_FB_from_RL/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "coord_DREO_RU" 1#define SOLVER "drfb-eorl"
2#define NISSFLAG NISSY_NISSFLAG_LINEAR 2#define NISSFLAG NISSY_NISSFLAG_LINEAR
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/414_solvetest_DREO_RL_from_UD/solvetest.c b/tools/414_solvetest_DREO_RL_from_UD/solvetest.c
index 59e8bc8..449bb7b 100644
--- a/tools/414_solvetest_DREO_RL_from_UD/solvetest.c
+++ b/tools/414_solvetest_DREO_RL_from_UD/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "coord_DREO_FR" 1#define SOLVER "drrl-eoud"
2#define NISSFLAG NISSY_NISSFLAG_LINEAR 2#define NISSFLAG NISSY_NISSFLAG_LINEAR
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/415_solvetest_DREO_FB_from_UD/solvetest.c b/tools/415_solvetest_DREO_FB_from_UD/solvetest.c
index 2b0004d..0e5ca16 100644
--- a/tools/415_solvetest_DREO_FB_from_UD/solvetest.c
+++ b/tools/415_solvetest_DREO_FB_from_UD/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "coord_DREO_FD" 1#define SOLVER "drfb-eoud"
2#define NISSFLAG NISSY_NISSFLAG_LINEAR 2#define NISSFLAG NISSY_NISSFLAG_LINEAR
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/416_solvetest_DRFIN_UD/solvetest.c b/tools/416_solvetest_DRFIN_UD/solvetest.c
index 69e4612..ad19fd1 100644
--- a/tools/416_solvetest_DRFIN_UD/solvetest.c
+++ b/tools/416_solvetest_DRFIN_UD/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "mcoord_DRFIN_UF" 1#define SOLVER "drudfin"
2#define NISSFLAG NISSY_NISSFLAG_NORMAL 2#define NISSFLAG NISSY_NISSFLAG_NORMAL
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/417_solvetest_DRFIN_RL/solvetest.c b/tools/417_solvetest_DRFIN_RL/solvetest.c
index 988e570..5648a52 100644
--- a/tools/417_solvetest_DRFIN_RL/solvetest.c
+++ b/tools/417_solvetest_DRFIN_RL/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "mcoord_DRFIN_LF" 1#define SOLVER "drrlfin"
2#define NISSFLAG NISSY_NISSFLAG_NORMAL 2#define NISSFLAG NISSY_NISSFLAG_NORMAL
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/418_solvetest_DRFIN_FB/solvetest.c b/tools/418_solvetest_DRFIN_FB/solvetest.c
index 531cf23..d0e8229 100644
--- a/tools/418_solvetest_DRFIN_FB/solvetest.c
+++ b/tools/418_solvetest_DRFIN_FB/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "mcoord_DRFIN_BU" 1#define SOLVER "drfbfin"
2#define NISSFLAG NISSY_NISSFLAG_NORMAL 2#define NISSFLAG NISSY_NISSFLAG_NORMAL
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20
diff --git a/tools/419_solvetest_HTR_from_UD/solvetest.c b/tools/419_solvetest_HTR_from_UD/solvetest.c
index b5de5f4..9556128 100644
--- a/tools/419_solvetest_HTR_from_UD/solvetest.c
+++ b/tools/419_solvetest_HTR_from_UD/solvetest.c
@@ -1,4 +1,4 @@
1#define SOLVER "coord_HTR_UF" 1#define SOLVER "htr-drud"
2#define NISSFLAG NISSY_NISSFLAG_ALL 2#define NISSFLAG NISSY_NISSFLAG_ALL
3#define MINMOVES 0 3#define MINMOVES 0
4#define MAXMOVES 20 4#define MAXMOVES 20

Generated with cgit - Back to sebastiano.tronto.net