commit 2d0ab15ac1f81c76cb6bb31bbdad3d2ee339e062
parent 0ad2e864f63e77157815242b96faafdfae376dd8
Author: Sebastiano Tronto <sebastiano@tronto.net>
Date: Thu, 17 Jul 2025 08:54:20 +0200
Renamed drslice drfinnoe
Diffstat:
4 files changed, 142 insertions(+), 142 deletions(-)
diff --git a/src/solvers/coord/coord.h b/src/solvers/coord/coord.h
@@ -3,7 +3,7 @@
#include "eo.h"
#include "dr.h"
#include "dreo.h"
-#include "drslice.h"
+#include "drfinnoe.h"
#include "list.h"
#include "utils.h"
#include "gendata.h"
diff --git a/src/solvers/coord/drfinnoe.h b/src/solvers/coord/drfinnoe.h
@@ -0,0 +1,140 @@
+/*
+TODO
+
+The pruning table for this coordinate shows some odd behavior, which
+is actually also present in nissy-classic: after completing depth 14,
+if the search is let run for higher depth, no more positions are found.
+This could be as simple as a small bug in the logic of the pruning table
+calculations - I may be assuming somewhere that I am never going to search
+for depths >= 15, since they are the highest possible value anyway -
+or some reason related to symmetry - are some cases actually impossible?
+In the worst case, it is a bug to be fixed, but I find it unlikely.
+*/
+
+#define CLASSES_CP_16 2768
+
+STATIC uint64_t coordinate_cp_coord(cube_t);
+STATIC cube_t coordinate_cp_cube(uint64_t);
+STATIC uint64_t coordinate_epud_coord(cube_t);
+STATIC cube_t coordinate_epud_cube(uint64_t);
+STATIC cube_t coordinate_drfinnoe_merge(cube_t, cube_t);
+
+STATIC uint64_t coordinate_drfinnoe_coord(cube_t, const unsigned char *);
+STATIC cube_t coordinate_drfinnoe_cube(uint64_t, const unsigned char *);
+STATIC bool coordinate_drfinnoe_isnasty(uint64_t, const unsigned char *);
+STATIC size_t coordinate_drfinnoe_gendata(unsigned char *);
+
+STATIC bool is_drfinnoe_solvable(cube_t);
+
+STATIC coord_t coordinate_drfinnoe = {
+ .name = "DRFINNOE",
+ .coord = &coordinate_drfinnoe_coord,
+ .cube = &coordinate_drfinnoe_cube,
+ .isnasty = &coordinate_drfinnoe_isnasty,
+ .gendata = coordinate_drfinnoe_gendata,
+ .max = CLASSES_CP_16 * FACT_8,
+ .trans_mask = TM_UDFIX,
+ .moves_mask = MM18_DR,
+ .axistrans = {
+ [AXIS_UD] = TRANS_UFr,
+ [AXIS_RL] = TRANS_RFr,
+ [AXIS_FB] = TRANS_FDr,
+ },
+ .is_admissible = &solution_always_valid,
+ .is_solvable = &is_drfinnoe_solvable,
+ .pruning_distribution = {
+ [0] = 1,
+ [1] = 3,
+ [2] = 10,
+ [3] = 52,
+ [4] = 285,
+ [5] = 1318,
+ [6] = 5671,
+ [7] = 26502,
+ [8] = 115467,
+ [9] = 470846,
+ [10] = 1853056,
+ [11] = 6535823,
+ [12] = 18349792,
+ [13] = 32843350,
+ [14] = 34118883,
+ [15] = 17284701
+ },
+ .pruning_max = 15,
+ .sym = {
+ .classes = CLASSES_CP_16,
+ .max = FACT_8,
+ .coord = &coordinate_cp_coord,
+ .cube = &coordinate_cp_cube,
+ .max2 = FACT_8,
+ .coord2 = &coordinate_epud_coord,
+ .cube2 = &coordinate_epud_cube,
+ .merge = &coordinate_drfinnoe_merge,
+ },
+};
+
+STATIC uint64_t
+coordinate_cp_coord(cube_t c)
+{
+ return coord_cp(c);
+}
+
+STATIC cube_t
+coordinate_cp_cube(uint64_t i)
+{
+ return invcoord_cp(i);
+}
+
+STATIC uint64_t
+coordinate_epud_coord(cube_t c)
+{
+ return coord_epud(c);
+}
+
+STATIC cube_t
+coordinate_epud_cube(uint64_t i)
+{
+ return invcoord_epud(i);
+}
+
+STATIC cube_t
+coordinate_drfinnoe_merge(cube_t c1, cube_t c2)
+{
+ cube_t merged;
+
+ merged = c1;
+ copy_edges(&merged, c2);
+
+ return merged;
+}
+
+STATIC uint64_t
+coordinate_drfinnoe_coord(cube_t cube, const unsigned char *data)
+{
+ return coord_coord_generic(&coordinate_drfinnoe, cube, data);
+}
+
+STATIC cube_t
+coordinate_drfinnoe_cube(uint64_t i, const unsigned char *data)
+{
+ return coord_cube_generic(&coordinate_drfinnoe, i, data);
+}
+
+STATIC bool
+coordinate_drfinnoe_isnasty(uint64_t i, const unsigned char *data)
+{
+ return coord_isnasty_generic(&coordinate_drfinnoe, i, data);
+}
+
+STATIC size_t
+coordinate_drfinnoe_gendata(unsigned char *data)
+{
+ return coord_gendata_generic(&coordinate_drfinnoe, data);
+}
+
+STATIC bool
+is_drfinnoe_solvable(cube_t cube) {
+ return coord_eo(cube) == 0 &&
+ coord_eo(transform_edges(cube, TRANS_URr)) == 0 &&
+ coord_co(cube) == 0;
+}
diff --git a/src/solvers/coord/drslice.h b/src/solvers/coord/drslice.h
@@ -1,140 +0,0 @@
-/*
-TODO
-
-The pruning table for this coordinate shows some odd behavior, which
-is actually also present in nissy-classic: after completing depth 14,
-if the search is let run for higher depth, no more positions are found.
-This could be as simple as a small bug in the logic of the pruning table
-calculations - I may be assuming somewhere that I am never going to search
-for depths >= 15, since they are the highest possible value anyway -
-or some reason related to symmetry - are some cases actually impossible?
-In the worst case, it is a bug to be fixed, but I find it unlikely.
-*/
-
-#define CLASSES_CP_16 2768
-
-STATIC uint64_t coordinate_cp_coord(cube_t);
-STATIC cube_t coordinate_cp_cube(uint64_t);
-STATIC uint64_t coordinate_epud_coord(cube_t);
-STATIC cube_t coordinate_epud_cube(uint64_t);
-STATIC cube_t coordinate_drslice_merge(cube_t, cube_t);
-
-STATIC uint64_t coordinate_drslice_coord(cube_t, const unsigned char *);
-STATIC cube_t coordinate_drslice_cube(uint64_t, const unsigned char *);
-STATIC bool coordinate_drslice_isnasty(uint64_t, const unsigned char *);
-STATIC size_t coordinate_drslice_gendata(unsigned char *);
-
-STATIC bool is_drslice_solvable(cube_t);
-
-STATIC coord_t coordinate_drslice = {
- .name = "DRSLICE",
- .coord = &coordinate_drslice_coord,
- .cube = &coordinate_drslice_cube,
- .isnasty = &coordinate_drslice_isnasty,
- .gendata = coordinate_drslice_gendata,
- .max = CLASSES_CP_16 * FACT_8,
- .trans_mask = TM_UDFIX,
- .moves_mask = MM18_DR,
- .axistrans = {
- [AXIS_UD] = TRANS_UFr,
- [AXIS_RL] = TRANS_RFr,
- [AXIS_FB] = TRANS_FDr,
- },
- .is_admissible = &solution_always_valid,
- .is_solvable = &is_drslice_solvable,
- .pruning_distribution = {
- [0] = 1,
- [1] = 3,
- [2] = 10,
- [3] = 52,
- [4] = 285,
- [5] = 1318,
- [6] = 5671,
- [7] = 26502,
- [8] = 115467,
- [9] = 470846,
- [10] = 1853056,
- [11] = 6535823,
- [12] = 18349792,
- [13] = 32843350,
- [14] = 34118883,
- [15] = 17284701
- },
- .pruning_max = 15,
- .sym = {
- .classes = CLASSES_CP_16,
- .max = FACT_8,
- .coord = &coordinate_cp_coord,
- .cube = &coordinate_cp_cube,
- .max2 = FACT_8,
- .coord2 = &coordinate_epud_coord,
- .cube2 = &coordinate_epud_cube,
- .merge = &coordinate_drslice_merge,
- },
-};
-
-STATIC uint64_t
-coordinate_cp_coord(cube_t c)
-{
- return coord_cp(c);
-}
-
-STATIC cube_t
-coordinate_cp_cube(uint64_t i)
-{
- return invcoord_cp(i);
-}
-
-STATIC uint64_t
-coordinate_epud_coord(cube_t c)
-{
- return coord_epud(c);
-}
-
-STATIC cube_t
-coordinate_epud_cube(uint64_t i)
-{
- return invcoord_epud(i);
-}
-
-STATIC cube_t
-coordinate_drslice_merge(cube_t c1, cube_t c2)
-{
- cube_t merged;
-
- merged = c1;
- copy_edges(&merged, c2);
-
- return merged;
-}
-
-STATIC uint64_t
-coordinate_drslice_coord(cube_t cube, const unsigned char *data)
-{
- return coord_coord_generic(&coordinate_drslice, cube, data);
-}
-
-STATIC cube_t
-coordinate_drslice_cube(uint64_t i, const unsigned char *data)
-{
- return coord_cube_generic(&coordinate_drslice, i, data);
-}
-
-STATIC bool
-coordinate_drslice_isnasty(uint64_t i, const unsigned char *data)
-{
- return coord_isnasty_generic(&coordinate_drslice, i, data);
-}
-
-STATIC size_t
-coordinate_drslice_gendata(unsigned char *data)
-{
- return coord_gendata_generic(&coordinate_drslice, data);
-}
-
-STATIC bool
-is_drslice_solvable(cube_t cube) {
- return coord_eo(cube) == 0 &&
- coord_eo(transform_edges(cube, TRANS_URr)) == 0 &&
- coord_co(cube) == 0;
-}
diff --git a/src/solvers/coord/list.h b/src/solvers/coord/list.h
@@ -2,6 +2,6 @@ coord_t *all_coordinates[] = {
&coordinate_eo,
&coordinate_dr,
&coordinate_dreo,
- &coordinate_drslice,
+ &coordinate_drfinnoe,
NULL
};