From 1bd4691d9cc46ec75adbe899b289a1ebc5460721 Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Fri, 1 Aug 2025 16:52:44 +0200 Subject: Added CPEPE coordinate in preparation of full DRFIN solver --- src/solvers/coord/cpepe.h | 86 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/solvers/coord/cpepe.h (limited to 'src/solvers') diff --git a/src/solvers/coord/cpepe.h b/src/solvers/coord/cpepe.h new file mode 100644 index 0000000..37ec014 --- /dev/null +++ b/src/solvers/coord/cpepe.h @@ -0,0 +1,86 @@ +STATIC cube_t coordinate_cpepe_merge(const cube_t, const cube_t); +STATIC uint64_t coordinate_cpepe_coord(const cube_t, const unsigned char *); +STATIC cube_t coordinate_cpepe_cube(uint64_t, const unsigned char *); +STATIC bool coordinate_cpepe_isnasty(uint64_t, const unsigned char *); +STATIC size_t coordinate_cpepe_gendata(unsigned char *); + +STATIC coord_t coordinate_cpepe = { + .name = "CPEPE", + .coord = &coordinate_cpepe_coord, + .cube = &coordinate_cpepe_cube, + .isnasty = &coordinate_cpepe_isnasty, + .gendata = coordinate_cpepe_gendata, + .max = CLASSES_CP_16 * FACT_4, + .trans_mask = TM_UDFIX, + .moves_mask_gendata = MM18_DR, + .moves_mask_solve = MM18_DR, + .is_admissible = &solution_always_valid, + .is_solvable = &is_drfin_solvable, + .is_solved = NULL, + .allow_niss = false, + .pruning_distribution = { + /* TODO */ + [0] = 0, + [1] = 0, + [2] = 0, + [3] = 0, + [4] = 0, + [5] = 0, + [6] = 0, + [7] = 0, + [8] = 0, + [9] = 0, + [10] = 0, + [11] = 0, + [12] = 0, + [13] = 0, + [14] = 0, + [15] = 0, + }, + .pruning_max = 15, /* TODO */ + .sym = { + .classes = CLASSES_CP_16, + .max = FACT_8, + .coord = &coord_cp, + .cube = &invcoord_cp, + .max2 = FACT_4, + .coord2 = &coord_epe, + .cube2 = &invcoord_epe, + .merge = &coordinate_cpepe_merge, + }, +}; + +STATIC cube_t +coordinate_cpepe_merge(const cube_t c1, const cube_t c2) +{ + cube_t merged; + + merged = c1; + copy_edges(&merged, c2); + + return merged; +} + +STATIC uint64_t +coordinate_cpepe_coord(const cube_t cube, const unsigned char *data) +{ + return coord_coord_generic(&coordinate_cpepe, cube, data); +} + +STATIC cube_t +coordinate_cpepe_cube(uint64_t i, const unsigned char *data) +{ + return coord_cube_generic(&coordinate_cpepe, i, data); +} + +STATIC bool +coordinate_cpepe_isnasty(uint64_t i, const unsigned char *data) +{ + return coord_isnasty_generic(&coordinate_cpepe, i, data); +} + +STATIC size_t +coordinate_cpepe_gendata(unsigned char *data) +{ + return coord_gendata_generic(&coordinate_cpepe, data); +} -- cgit v1.3