aboutsummaryrefslogtreecommitdiff
path: root/src/solvers/coord/gendata.h
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2025-04-02 14:33:21 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2025-04-02 14:33:21 +0200
commitc5a6ff0443fc9e5e890fe72cb13ea78d4fe2bbcb (patch)
tree9a5710c2393a09078df72d95364b6af966d745bd /src/solvers/coord/gendata.h
parent82e0a6bf454f5684b44bb0a24db619e9ba0567a0 (diff)
downloadnissy-core-c5a6ff0443fc9e5e890fe72cb13ea78d4fe2bbcb.tar.gz
nissy-core-c5a6ff0443fc9e5e890fe72cb13ea78d4fe2bbcb.zip
Added dreo coordinate solver
Diffstat (limited to 'src/solvers/coord/gendata.h')
-rw-r--r--src/solvers/coord/gendata.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/solvers/coord/gendata.h b/src/solvers/coord/gendata.h
index 423dad1..63e1631 100644
--- a/src/solvers/coord/gendata.h
+++ b/src/solvers/coord/gendata.h
@@ -39,6 +39,9 @@ gendata_coord(const coord_t coord[static 1], void *buf)
39 39
40 coord_data = buf == NULL ? NULL : ((uint8_t *)buf) + INFOSIZE; 40 coord_data = buf == NULL ? NULL : ((uint8_t *)buf) + INFOSIZE;
41 coord_dsize = coord->gendata(coord_data); 41 coord_dsize = coord->gendata(coord_data);
42 if (coord_dsize == SIZE_MAX)
43 goto gendata_coord_error;
44
42 ninfo = coord_dsize == 0 ? 1 : 2; 45 ninfo = coord_dsize == 0 ? 1 : 2;
43 tablesize = DIV_ROUND_UP(coord->max, 2); 46 tablesize = DIV_ROUND_UP(coord->max, 2);
44 47
@@ -77,6 +80,10 @@ gendata_coord(const coord_t coord[static 1], void *buf)
77 80
78gendata_coord_return_size: 81gendata_coord_return_size:
79 return ninfo * INFOSIZE + coord_dsize + tablesize; 82 return ninfo * INFOSIZE + coord_dsize + tablesize;
83
84gendata_coord_error:
85 LOG("An unexpected error occurred when generating the data.\n");
86 return 0;
80} 87}
81 88
82STATIC tableinfo_t 89STATIC tableinfo_t
@@ -167,6 +174,8 @@ genptable_coord_fillneighbors(
167 c = coord->cube(i, data); 174 c = coord->cube(i, data);
168 tot = 0; 175 tot = 0;
169 for (m = 0; m < NMOVES; m++) { 176 for (m = 0; m < NMOVES; m++) {
177 if (!((UINT32_C(1) << (uint32_t)m) & coord->moves_mask))
178 continue;
170 moved = move(c, m); 179 moved = move(c, m);
171 ii = coord->coord(moved, data); 180 ii = coord->coord(moved, data);
172 isnasty = coord->isnasty(ii, data); 181 isnasty = coord->isnasty(ii, data);
@@ -216,6 +225,8 @@ genptable_coord_fillfromnew(
216 for (j = 0, found = false; j < nsim && !found; j++) { 225 for (j = 0, found = false; j < nsim && !found; j++) {
217 c = coord->cube(sim[j], data); 226 c = coord->cube(sim[j], data);
218 for (m = 0; m < NMOVES; m++) { 227 for (m = 0; m < NMOVES; m++) {
228 if (!((UINT32_C(1) << (uint32_t)m) & coord->moves_mask))
229 continue;
219 ii = coord->coord(move(c, m), data); 230 ii = coord->coord(move(c, m), data);
220 if (get_coord_pval(coord, table, ii) < d) { 231 if (get_coord_pval(coord, table, ii) < d) {
221 found = true; 232 found = true;

Generated with cgit - Back to sebastiano.tronto.net