aboutsummaryrefslogtreecommitdiff
path: root/src/solvers/coord/solve.h
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2025-04-17 10:50:57 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2025-04-17 14:36:27 +0200
commit0ece4b72db22139db51e8f5f37c25f24c84f3e43 (patch)
treefa9d0f5ec4124b2e51194ec6dc888e037b9da7e2 /src/solvers/coord/solve.h
parent785f2859e336db49095a8443be8d204ba0989925 (diff)
downloadnissy-core-0ece4b72db22139db51e8f5f37c25f24c84f3e43.tar.gz
nissy-core-0ece4b72db22139db51e8f5f37c25f24c84f3e43.zip
Small rework of optimal vs maxsols
I wanted to make the "optimal" and "maxsolutions" options mutually exclusive, but in the end I decided there is value in keeping both (e.g. for specifying a limit to the number of solutions when asking for "all" optimal"). Now optimal cannot be negative anymore, for the same reason of maxsolutions. The interface user (shell, UI) will have to take care of handling this in a way that makes sense for the user. Usually this means setting the maximum number of solutions to UINT_MAX (or a similar very high number) when the user wants "all optimal".
Diffstat (limited to 'src/solvers/coord/solve.h')
-rw-r--r--src/solvers/coord/solve.h13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/solvers/coord/solve.h b/src/solvers/coord/solve.h
index 464f7bd..b289e3f 100644
--- a/src/solvers/coord/solve.h
+++ b/src/solvers/coord/solve.h
@@ -13,10 +13,11 @@ typedef struct {
13} dfsarg_solve_coord_t; 13} dfsarg_solve_coord_t;
14 14
15STATIC int64_t solve_coord(cube_t, coord_t [static 1], uint8_t, uint8_t, 15STATIC int64_t solve_coord(cube_t, coord_t [static 1], uint8_t, uint8_t,
16 uint8_t, uint8_t, uint64_t, int8_t, int, uint64_t, const void *, 16 uint8_t, uint8_t, uint64_t, uint8_t, uint8_t, uint64_t, const void *,
17 size_t n, char [n]); 17 size_t n, char [n]);
18STATIC int64_t solve_coord_dispatch(cube_t, const char *, uint8_t, uint8_t, 18STATIC int64_t solve_coord_dispatch(cube_t, const char *, uint8_t, uint8_t,
19 uint8_t, uint64_t, int8_t, int, uint64_t, const void *, size_t n, char [n]); 19 uint8_t, uint64_t, uint8_t, uint8_t, uint64_t, const void *, size_t n,
20 char [n]);
20STATIC bool coord_solution_admissible(const dfsarg_solve_coord_t [static 1]); 21STATIC bool coord_solution_admissible(const dfsarg_solve_coord_t [static 1]);
21STATIC bool solve_coord_dfs_stop(const dfsarg_solve_coord_t [static 1]); 22STATIC bool solve_coord_dfs_stop(const dfsarg_solve_coord_t [static 1]);
22STATIC bool coord_continue_onnormal(const dfsarg_solve_coord_t [static 1]); 23STATIC bool coord_continue_onnormal(const dfsarg_solve_coord_t [static 1]);
@@ -204,8 +205,8 @@ solve_coord_dispatch(
204 uint8_t minmoves, 205 uint8_t minmoves,
205 uint8_t maxmoves, 206 uint8_t maxmoves,
206 uint64_t maxsolutions, 207 uint64_t maxsolutions,
207 int8_t optimal, 208 uint8_t optimal,
208 int threads, 209 uint8_t threads,
209 uint64_t data_size, 210 uint64_t data_size,
210 const void *data, 211 const void *data,
211 size_t solutions_size, 212 size_t solutions_size,
@@ -242,8 +243,8 @@ solve_coord(
242 uint8_t minmoves, 243 uint8_t minmoves,
243 uint8_t maxmoves, 244 uint8_t maxmoves,
244 uint64_t maxsolutions, 245 uint64_t maxsolutions,
245 int8_t optimal, 246 uint8_t optimal,
246 int threads, 247 uint8_t threads,
247 uint64_t data_size, 248 uint64_t data_size,
248 const void *data, 249 const void *data,
249 size_t solutions_size, 250 size_t solutions_size,

Generated with cgit - Back to sebastiano.tronto.net