diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2025-04-02 14:33:21 +0200 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2025-04-02 14:33:21 +0200 |
| commit | c5a6ff0443fc9e5e890fe72cb13ea78d4fe2bbcb (patch) | |
| tree | 9a5710c2393a09078df72d95364b6af966d745bd /src/solvers/coord/gendata.h | |
| parent | 82e0a6bf454f5684b44bb0a24db619e9ba0567a0 (diff) | |
| download | nissy-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.h | 11 |
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 | ||
| 78 | gendata_coord_return_size: | 81 | gendata_coord_return_size: |
| 79 | return ninfo * INFOSIZE + coord_dsize + tablesize; | 82 | return ninfo * INFOSIZE + coord_dsize + tablesize; |
| 83 | |||
| 84 | gendata_coord_error: | ||
| 85 | LOG("An unexpected error occurred when generating the data.\n"); | ||
| 86 | return 0; | ||
| 80 | } | 87 | } |
| 81 | 88 | ||
| 82 | STATIC tableinfo_t | 89 | STATIC 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; |
