From c5a6ff0443fc9e5e890fe72cb13ea78d4fe2bbcb Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Wed, 2 Apr 2025 14:33:21 +0200 Subject: Added dreo coordinate solver --- src/solvers/coord/eo.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/solvers/coord/eo.h') diff --git a/src/solvers/coord/eo.h b/src/solvers/coord/eo.h index b83be01..a0685c4 100644 --- a/src/solvers/coord/eo.h +++ b/src/solvers/coord/eo.h @@ -2,6 +2,7 @@ STATIC uint64_t coordinate_eo_coord(cube_t, const void *); STATIC cube_t coordinate_eo_cube(uint64_t, const void *); STATIC bool coordinate_eo_isnasty(uint64_t, const void *); STATIC size_t coordinate_eo_gendata(void *); +STATIC bool is_eo_even(cube_t); STATIC coord_t coordinate_eo = { .name = "EO", @@ -18,6 +19,7 @@ STATIC coord_t coordinate_eo = { [AXIS_FB] = TRANS_UFr, }, .is_admissible = &solution_lastqt_cw, + .is_solvable = &is_eo_even, .sym = {0}, }; @@ -46,3 +48,16 @@ coordinate_eo_gendata(void *data) { return 0; } + +STATIC bool +is_eo_even(cube_t cube) +{ + uint8_t c[8], e[12], i, count; + + pieces(&cube, c, e); + + for (i = 0, count = 0; i < 12; i++) + count += (e[i] & EOBIT) >> EOSHIFT; + + return count % 2 == 0; +} -- cgit v1.3