h48

A prototype for an optimal Rubik's cube solver, work in progress.
git clone https://git.tronto.net/h48
Download | Log | Files | Refs | README | LICENSE

commit 4a7e2dccaa54bc42a4b67cf35cf8b926cf357bb3
parent 97b3aa48a8d6ccdf2a3ce587bf8ac130c00c1b64
Author: Sebastiano Tronto <sebastiano@tronto.net>
Date:   Sun, 22 Oct 2023 22:46:52 +0200

Added transformations (and fixed tests)

Diffstat:
MREADME.md | 3+--
Ah48_to_src | 0
Msrc/cube.c | 237+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest/05_transform/101_UFm_U.out | 2+-
Mtest/05_transform/103_UFm_R.out | 2+-
Mtest/05_transform/105_UFm_F.out | 2+-
Mtest/05_transform/107_ULm_U.out | 2+-
Mtest/05_transform/109_ULm_R.out | 2+-
Mtest/05_transform/111_ULm_F.out | 2+-
Mtest/05_transform/113_UBm_U.out | 2+-
Mtest/05_transform/115_UBm_R.out | 2+-
Mtest/05_transform/117_UBm_F.out | 2+-
Mtest/05_transform/119_URm_U.out | 2+-
Mtest/05_transform/121_URm_R.out | 2+-
Mtest/05_transform/123_URm_F.out | 2+-
Mtest/05_transform/125_DFm_U.out | 2+-
Mtest/05_transform/127_DFm_R.out | 2+-
Mtest/05_transform/129_DFm_F.out | 2+-
Mtest/05_transform/131_DLm_U.out | 2+-
Mtest/05_transform/133_DLm_R.out | 2+-
Mtest/05_transform/135_DLm_F.out | 2+-
Mtest/05_transform/137_DBm_U.out | 2+-
Mtest/05_transform/139_DBm_R.out | 2+-
Mtest/05_transform/141_DBm_F.out | 2+-
Mtest/05_transform/143_DRm_U.out | 2+-
Mtest/05_transform/145_DRm_R.out | 2+-
Mtest/05_transform/147_DRm_F.out | 2+-
Mtest/05_transform/149_RUm_U.out | 2+-
Mtest/05_transform/151_RUm_R.out | 2+-
Mtest/05_transform/153_RUm_F.out | 2+-
Mtest/05_transform/155_RFm_U.out | 2+-
Mtest/05_transform/157_RFm_R.out | 2+-
Mtest/05_transform/159_RFm_F.out | 2+-
Mtest/05_transform/161_RDm_U.out | 2+-
Mtest/05_transform/163_RDm_R.out | 2+-
Mtest/05_transform/165_RDm_F.out | 2+-
Mtest/05_transform/167_RBm_U.out | 2+-
Mtest/05_transform/169_RBm_R.out | 2+-
Mtest/05_transform/171_RBm_F.out | 2+-
Mtest/05_transform/173_LUm_U.out | 2+-
Mtest/05_transform/175_LUm_R.out | 2+-
Mtest/05_transform/177_LUm_F.out | 2+-
Mtest/05_transform/179_LFm_U.out | 2+-
Mtest/05_transform/181_LFm_R.out | 2+-
Mtest/05_transform/183_LFm_F.out | 2+-
Mtest/05_transform/185_LDm_U.out | 2+-
Mtest/05_transform/187_LDm_R.out | 2+-
Mtest/05_transform/189_LDm_F.out | 2+-
Mtest/05_transform/191_LBm_U.out | 2+-
Mtest/05_transform/193_LBm_R.out | 2+-
Mtest/05_transform/195_LBm_F.out | 2+-
Mtest/05_transform/197_FUm_U.out | 2+-
Mtest/05_transform/199_FUm_R.out | 2+-
Mtest/05_transform/201_FUm_F.out | 2+-
Mtest/05_transform/203_FRm_U.out | 2+-
Mtest/05_transform/205_FRm_R.out | 2+-
Mtest/05_transform/207_FRm_F.out | 2+-
Mtest/05_transform/209_FDm_U.out | 2+-
Mtest/05_transform/211_FDm_R.out | 2+-
Mtest/05_transform/213_FDm_F.out | 2+-
Mtest/05_transform/215_FLm_U.out | 2+-
Mtest/05_transform/217_FLm_R.out | 2+-
Mtest/05_transform/219_FLm_F.out | 2+-
Mtest/05_transform/221_BUm_U.out | 2+-
Mtest/05_transform/223_BUm_R.out | 2+-
Mtest/05_transform/225_BUm_F.out | 2+-
Mtest/05_transform/227_BRm_U.out | 2+-
Mtest/05_transform/229_BRm_R.out | 2+-
Mtest/05_transform/231_BRm_F.out | 2+-
Mtest/05_transform/233_BDm_U.out | 2+-
Mtest/05_transform/235_BDm_R.out | 2+-
Mtest/05_transform/237_BDm_F.out | 2+-
Mtest/05_transform/239_BLm_U.out | 2+-
Mtest/05_transform/241_BLm_R.out | 2+-
Mtest/05_transform/243_BLm_F.out | 2+-
Autils/gentranscode.sh | 12++++++++++++
Mutils/gentranstests.sh | 3++-
Autils/h48_to_src.c | 20++++++++++++++++++++
Autils/trans_move_array.txt | 192+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
79 files changed, 536 insertions(+), 75 deletions(-)

diff --git a/README.md b/README.md @@ -4,15 +4,14 @@ Work in progress. TODO: -* implement transformations (use write to SRC to make life easier) * setup benchmarks +* AVX2 compile-time switch * coordinates: co, eo, epsep, cpsep_sym, cocpsep_sym, cphtr_sym, cocphtr_sym * pruning tables (1 bit per entry + fallback) * solve.c Optimizations: -* avx2_cube.c * multi-move (up to 4/5 moves at once) Things I need to learn: diff --git a/h48_to_src b/h48_to_src Binary files differ. diff --git a/src/cube.c b/src/cube.c @@ -181,6 +181,7 @@ cube_t solvedcube = { static cube_t errorcube = { .e = {0}, .c = {0} }; static bool isconsistent(cube_t); +static cube_t flipallcorners(cube_t); static uint8_t readco(char *); static uint8_t readcp(char *); static uint8_t readeo(char *); @@ -904,8 +905,244 @@ compose_inconsistent: return errorcube; } +static cube_t +flipallcorners(cube_t c) +{ + uint8_t i, piece, orien; + cube_t ret; + + ret = c; + for (i = 0; i < 8; i++) { + piece = ret.c[i]; + orien = ((piece << 1) | (piece >> 1)) & _cobits2; + ret.c[i] = (piece & _pbits) | orien; + } + + return ret; +} + cube_t transform(cube_t c, trans_t t) { + static cube_t trans_move_cube[] = { + [UFr] = { + .c = {0, 1, 2, 3, 4, 5, 6, 7}, + .e = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} + }, + [ULr] = { + .c = {4, 5, 7, 6, 1, 0, 2, 3}, + .e = {5, 4, 7, 6, 0, 1, 2, 3, 25, 26, 27, 24} + }, + [UBr] = { + .c = {1, 0, 3, 2, 5, 4, 7, 6}, + .e = {1, 0, 3, 2, 5, 4, 7, 6, 10, 11, 8, 9} + }, + [URr] = { + .c = {5, 4, 6, 7, 0, 1, 3, 2}, + .e = {4, 5, 6, 7, 1, 0, 3, 2, 27, 24, 25, 26} + }, + [DFr] = { + .c = {2, 3, 0, 1, 6, 7, 4, 5}, + .e = {3, 2, 1, 0, 6, 7, 4, 5, 9, 8, 11, 10} + }, + [DLr] = { + .c = {7, 6, 4, 5, 2, 3, 1, 0}, + .e = {6, 7, 4, 5, 2, 3, 0, 1, 26, 25, 24, 27} + }, + [DBr] = { + .c = {3, 2, 1, 0, 7, 6, 5, 4}, + .e = {2, 3, 0, 1, 7, 6, 5, 4, 11, 10, 9, 8} + }, + [DRr] = { + .c = {6, 7, 5, 4, 3, 2, 0, 1}, + .e = {7, 6, 5, 4, 3, 2, 1, 0, 24, 27, 26, 25} + }, + [RUr] = { + .c = {64, 67, 65, 66, 37, 38, 36, 39}, + .e = {20, 23, 22, 21, 24, 27, 26, 25, 0, 1, 2, 3} + }, + [RFr] = { + .c = {38, 37, 36, 39, 64, 67, 66, 65}, + .e = {24, 27, 26, 25, 23, 20, 21, 22, 19, 16, 17, 18} + }, + [RDr] = { + .c = {67, 64, 66, 65, 38, 37, 39, 36}, + .e = {23, 20, 21, 22, 27, 24, 25, 26, 2, 3, 0, 1} + }, + [RBr] = { + .c = {37, 38, 39, 36, 67, 64, 65, 66}, + .e = {27, 24, 25, 26, 20, 23, 22, 21, 17, 18, 19, 16} + }, + [LUr] = { + .c = {65, 66, 64, 67, 36, 39, 37, 38}, + .e = {21, 22, 23, 20, 26, 25, 24, 27, 1, 0, 3, 2} + }, + [LFr] = { + .c = {36, 39, 38, 37, 66, 65, 64, 67}, + .e = {25, 26, 27, 24, 21, 22, 23, 20, 16, 19, 18, 17} + }, + [LDr] = { + .c = {66, 65, 67, 64, 39, 36, 38, 37}, + .e = {22, 21, 20, 23, 25, 26, 27, 24, 3, 2, 1, 0} + }, + [LBr] = { + .c = {39, 36, 37, 38, 65, 66, 67, 64}, + .e = {26, 25, 24, 27, 22, 21, 20, 23, 18, 17, 16, 19} + }, + [FUr] = { + .c = {68, 70, 69, 71, 32, 34, 33, 35}, + .e = {16, 19, 18, 17, 9, 8, 11, 10, 5, 4, 7, 6} + }, + [FRr] = { + .c = {32, 34, 35, 33, 70, 68, 69, 71}, + .e = {8, 9, 10, 11, 16, 19, 18, 17, 20, 23, 22, 21} + }, + [FDr] = { + .c = {70, 68, 71, 69, 34, 32, 35, 33}, + .e = {19, 16, 17, 18, 8, 9, 10, 11, 7, 6, 5, 4} + }, + [FLr] = { + .c = {34, 32, 33, 35, 68, 70, 71, 69}, + .e = {9, 8, 11, 10, 19, 16, 17, 18, 22, 21, 20, 23} + }, + [BUr] = { + .c = {69, 71, 68, 70, 33, 35, 32, 34}, + .e = {17, 18, 19, 16, 11, 10, 9, 8, 4, 5, 6, 7} + }, + [BRr] = { + .c = {35, 33, 32, 34, 69, 71, 70, 68}, + .e = {11, 10, 9, 8, 18, 17, 16, 19, 23, 20, 21, 22} + }, + [BDr] = { + .c = {71, 69, 70, 68, 35, 33, 34, 32}, + .e = {18, 17, 16, 19, 10, 11, 8, 9, 6, 7, 4, 5} + }, + [BLr] = { + .c = {33, 35, 34, 32, 71, 69, 68, 70}, + .e = {10, 11, 8, 9, 17, 18, 19, 16, 21, 22, 23, 20} + }, + [UFm] = { + .c = {4, 5, 6, 7, 0, 1, 2, 3}, + .e = {0, 1, 2, 3, 5, 4, 7, 6, 9, 8, 11, 10} + }, + [ULm] = { + .c = {0, 1, 3, 2, 5, 4, 6, 7}, + .e = {4, 5, 6, 7, 0, 1, 2, 3, 24, 27, 26, 25} + }, + [UBm] = { + .c = {5, 4, 7, 6, 1, 0, 3, 2}, + .e = {1, 0, 3, 2, 4, 5, 6, 7, 11, 10, 9, 8} + }, + [URm] = { + .c = {1, 0, 2, 3, 4, 5, 7, 6}, + .e = {5, 4, 7, 6, 1, 0, 3, 2, 26, 25, 24, 27} + }, + [DFm] = { + .c = {6, 7, 4, 5, 2, 3, 0, 1}, + .e = {3, 2, 1, 0, 7, 6, 5, 4, 8, 9, 10, 11} + }, + [DLm] = { + .c = {3, 2, 0, 1, 6, 7, 5, 4}, + .e = {7, 6, 5, 4, 2, 3, 0, 1, 27, 24, 25, 26} + }, + [DBm] = { + .c = {7, 6, 5, 4, 3, 2, 1, 0}, + .e = {2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9} + }, + [DRm] = { + .c = {2, 3, 1, 0, 7, 6, 4, 5}, + .e = {6, 7, 4, 5, 3, 2, 1, 0, 25, 26, 27, 24} + }, + [RUm] = { + .c = {68, 71, 69, 70, 33, 34, 32, 35}, + .e = {21, 22, 23, 20, 25, 26, 27, 24, 0, 1, 2, 3} + }, + [RFm] = { + .c = {34, 33, 32, 35, 68, 71, 70, 69}, + .e = {25, 26, 27, 24, 22, 21, 20, 23, 19, 16, 17, 18} + }, + [RDm] = { + .c = {71, 68, 70, 69, 34, 33, 35, 32}, + .e = {22, 21, 20, 23, 26, 25, 24, 27, 2, 3, 0, 1} + }, + [RBm] = { + .c = {33, 34, 35, 32, 71, 68, 69, 70}, + .e = {26, 25, 24, 27, 21, 22, 23, 20, 17, 18, 19, 16} + }, + [LUm] = { + .c = {69, 70, 68, 71, 32, 35, 33, 34}, + .e = {20, 23, 22, 21, 27, 24, 25, 26, 1, 0, 3, 2} + }, + [LFm] = { + .c = {32, 35, 34, 33, 70, 69, 68, 71}, + .e = {24, 27, 26, 25, 20, 23, 22, 21, 16, 19, 18, 17} + }, + [LDm] = { + .c = {70, 69, 71, 68, 35, 32, 34, 33}, + .e = {23, 20, 21, 22, 24, 27, 26, 25, 3, 2, 1, 0} + }, + [LBm] = { + .c = {35, 32, 33, 34, 69, 70, 71, 68}, + .e = {27, 24, 25, 26, 23, 20, 21, 22, 18, 17, 16, 19} + }, + [FUm] = { + .c = {64, 66, 65, 67, 36, 38, 37, 39}, + .e = {16, 19, 18, 17, 8, 9, 10, 11, 4, 5, 6, 7} + }, + [FRm] = { + .c = {36, 38, 39, 37, 66, 64, 65, 67}, + .e = {9, 8, 11, 10, 16, 19, 18, 17, 21, 22, 23, 20} + }, + [FDm] = { + .c = {66, 64, 67, 65, 38, 36, 39, 37}, + .e = {19, 16, 17, 18, 9, 8, 11, 10, 6, 7, 4, 5} + }, + [FLm] = { + .c = {38, 36, 37, 39, 64, 66, 67, 65}, + .e = {8, 9, 10, 11, 19, 16, 17, 18, 23, 20, 21, 22} + }, + [BUm] = { + .c = {65, 67, 64, 66, 37, 39, 36, 38}, + .e = {17, 18, 19, 16, 10, 11, 8, 9, 5, 4, 7, 6} + }, + [BRm] = { + .c = {39, 37, 36, 38, 65, 67, 66, 64}, + .e = {10, 11, 8, 9, 18, 17, 16, 19, 22, 21, 20, 23} + }, + [BDm] = { + .c = {67, 65, 66, 64, 39, 37, 38, 36}, + .e = {18, 17, 16, 19, 11, 10, 9, 8, 7, 6, 5, 4} + }, + [BLm] = { + .c = {37, 39, 38, 36, 67, 65, 64, 66}, + .e = {11, 10, 9, 8, 17, 18, 19, 16, 20, 23, 22, 21} + }, + }; + + cube_t ret; + +#ifdef DEBUG + if (!isconsistent(c)) + goto transform_inconsistent; + if (t >= 48) + goto transform_errortrans; +#endif + + ret = compose(solvedcube, trans_move_cube[t]); + ret = compose(ret, c); + /* TODO: pre-compute inverse for performance */ + ret = compose(ret, inverse(trans_move_cube[t])); + + /* TODO: work out a better way to do this */ + if (t >= 24) + ret = flipallcorners(ret); + + return ret; + +transform_inconsistent: + fprintf(stderr, "transform error, inconsistent cube\n"); + return errorcube; +transform_errortrans: + fprintf(stderr, "transform error, unknown transformation\n"); return errorcube; } diff --git a/test/05_transform/101_UFm_U.out b/test/05_transform/101_UFm_U.out @@ -1 +1 @@ -UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 +UL0 UR0 DB0 DF0 UF0 UB0 DL0 DR0 FR0 FL0 BL0 BR0 UFL0 UBR0 DFL0 DBR0 UBL0 UFR0 DFR0 DBL0 diff --git a/test/05_transform/103_UFm_R.out b/test/05_transform/103_UFm_R.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 FR0 UL0 DL0 BR0 DR0 FL0 BL0 UR0 DFR2 UBL0 DFL0 UBR2 UFL0 UFR1 DBR1 DBL0 +UF0 UB0 DB0 DF0 UR0 FL0 BL0 DR0 FR0 DL0 UL0 BR0 UFR0 UFL2 DBL2 DBR0 DFL1 UBR0 DFR0 UBL1 diff --git a/test/05_transform/105_UFm_F.out b/test/05_transform/105_UFm_F.out @@ -1 +1 @@ -FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 DBL0 +FR1 UB0 DB0 FL1 UR0 UL0 DL0 DR0 DF1 UF1 BL0 BR0 DFR1 UBL0 UFL1 DBR0 UFR2 UBR0 DFL2 DBL0 diff --git a/test/05_transform/107_ULm_U.out b/test/05_transform/107_ULm_U.out @@ -1 +1 @@ -UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 +UL0 UR0 DB0 DF0 UF0 UB0 DL0 DR0 FR0 FL0 BL0 BR0 UFL0 UBR0 DFL0 DBR0 UBL0 UFR0 DFR0 DBL0 diff --git a/test/05_transform/109_ULm_R.out b/test/05_transform/109_ULm_R.out @@ -1 +1 @@ -FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 DBL0 +FR1 UB0 DB0 FL1 UR0 UL0 DL0 DR0 DF1 UF1 BL0 BR0 DFR1 UBL0 UFL1 DBR0 UFR2 UBR0 DFL2 DBL0 diff --git a/test/05_transform/111_ULm_F.out b/test/05_transform/111_ULm_F.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 UR0 BL0 FL0 DR0 FR0 UL0 DL0 BR0 UFR0 DBL2 UFL2 DBR0 UBL1 UBR0 DFR0 DFL1 +UF0 UB0 DB0 DF0 BR0 UL0 DL0 FR0 UR0 FL0 BL0 DR0 UBR2 UBL0 DFL0 DFR2 UFL0 DBR1 UFR1 DBL0 diff --git a/test/05_transform/113_UBm_U.out b/test/05_transform/113_UBm_U.out @@ -1 +1 @@ -UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 +UL0 UR0 DB0 DF0 UF0 UB0 DL0 DR0 FR0 FL0 BL0 BR0 UFL0 UBR0 DFL0 DBR0 UBL0 UFR0 DFR0 DBL0 diff --git a/test/05_transform/115_UBm_R.out b/test/05_transform/115_UBm_R.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 UR0 BL0 FL0 DR0 FR0 UL0 DL0 BR0 UFR0 DBL2 UFL2 DBR0 UBL1 UBR0 DFR0 DFL1 +UF0 UB0 DB0 DF0 BR0 UL0 DL0 FR0 UR0 FL0 BL0 DR0 UBR2 UBL0 DFL0 DFR2 UFL0 DBR1 UFR1 DBL0 diff --git a/test/05_transform/117_UBm_F.out b/test/05_transform/117_UBm_F.out @@ -1 +1 @@ -UF0 BR1 BL1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 UB1 DB1 UFR0 UBR1 DFL0 DBL1 UFL0 DBR2 DFR0 UBL2 +UF0 BL1 BR1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 DB1 UB1 UFR0 DBL1 DFL0 UBR1 UFL0 UBL2 DFR0 DBR2 diff --git a/test/05_transform/119_URm_U.out b/test/05_transform/119_URm_U.out @@ -1 +1 @@ -UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 +UL0 UR0 DB0 DF0 UF0 UB0 DL0 DR0 FR0 FL0 BL0 BR0 UFL0 UBR0 DFL0 DBR0 UBL0 UFR0 DFR0 DBL0 diff --git a/test/05_transform/121_URm_R.out b/test/05_transform/121_URm_R.out @@ -1 +1 @@ -UF0 BR1 BL1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 UB1 DB1 UFR0 UBR1 DFL0 DBL1 UFL0 DBR2 DFR0 UBL2 +UF0 BL1 BR1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 DB1 UB1 UFR0 DBL1 DFL0 UBR1 UFL0 UBL2 DFR0 DBR2 diff --git a/test/05_transform/123_URm_F.out b/test/05_transform/123_URm_F.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 FR0 UL0 DL0 BR0 DR0 FL0 BL0 UR0 DFR2 UBL0 DFL0 UBR2 UFL0 UFR1 DBR1 DBL0 +UF0 UB0 DB0 DF0 UR0 FL0 BL0 DR0 FR0 DL0 UL0 BR0 UFR0 UFL2 DBL2 DBR0 DFL1 UBR0 DFR0 UBL1 diff --git a/test/05_transform/125_DFm_U.out b/test/05_transform/125_DFm_U.out @@ -1 +1 @@ -UF0 UB0 DR0 DL0 UR0 UL0 DB0 DF0 FR0 FL0 BL0 BR0 UFR0 UBL0 DBL0 DFR0 UFL0 UBR0 DFL0 DBR0 +UF0 UB0 DL0 DR0 UR0 UL0 DF0 DB0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFR0 DBL0 UFL0 UBR0 DBR0 DFL0 diff --git a/test/05_transform/127_DFm_R.out b/test/05_transform/127_DFm_R.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 UR0 BL0 FL0 DR0 FR0 UL0 DL0 BR0 UFR0 DBL2 UFL2 DBR0 UBL1 UBR0 DFR0 DFL1 +UF0 UB0 DB0 DF0 BR0 UL0 DL0 FR0 UR0 FL0 BL0 DR0 UBR2 UBL0 DFL0 DFR2 UFL0 DBR1 UFR1 DBL0 diff --git a/test/05_transform/129_DFm_F.out b/test/05_transform/129_DFm_F.out @@ -1 +1 @@ -FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 DBL0 +FR1 UB0 DB0 FL1 UR0 UL0 DL0 DR0 DF1 UF1 BL0 BR0 DFR1 UBL0 UFL1 DBR0 UFR2 UBR0 DFL2 DBL0 diff --git a/test/05_transform/131_DLm_U.out b/test/05_transform/131_DLm_U.out @@ -1 +1 @@ -UF0 UB0 DR0 DL0 UR0 UL0 DB0 DF0 FR0 FL0 BL0 BR0 UFR0 UBL0 DBL0 DFR0 UFL0 UBR0 DFL0 DBR0 +UF0 UB0 DL0 DR0 UR0 UL0 DF0 DB0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFR0 DBL0 UFL0 UBR0 DBR0 DFL0 diff --git a/test/05_transform/133_DLm_R.out b/test/05_transform/133_DLm_R.out @@ -1 +1 @@ -UF0 BR1 BL1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 UB1 DB1 UFR0 UBR1 DFL0 DBL1 UFL0 DBR2 DFR0 UBL2 +UF0 BL1 BR1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 DB1 UB1 UFR0 DBL1 DFL0 UBR1 UFL0 UBL2 DFR0 DBR2 diff --git a/test/05_transform/135_DLm_F.out b/test/05_transform/135_DLm_F.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 UR0 BL0 FL0 DR0 FR0 UL0 DL0 BR0 UFR0 DBL2 UFL2 DBR0 UBL1 UBR0 DFR0 DFL1 +UF0 UB0 DB0 DF0 BR0 UL0 DL0 FR0 UR0 FL0 BL0 DR0 UBR2 UBL0 DFL0 DFR2 UFL0 DBR1 UFR1 DBL0 diff --git a/test/05_transform/137_DBm_U.out b/test/05_transform/137_DBm_U.out @@ -1 +1 @@ -UF0 UB0 DR0 DL0 UR0 UL0 DB0 DF0 FR0 FL0 BL0 BR0 UFR0 UBL0 DBL0 DFR0 UFL0 UBR0 DFL0 DBR0 +UF0 UB0 DL0 DR0 UR0 UL0 DF0 DB0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFR0 DBL0 UFL0 UBR0 DBR0 DFL0 diff --git a/test/05_transform/139_DBm_R.out b/test/05_transform/139_DBm_R.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 FR0 UL0 DL0 BR0 DR0 FL0 BL0 UR0 DFR2 UBL0 DFL0 UBR2 UFL0 UFR1 DBR1 DBL0 +UF0 UB0 DB0 DF0 UR0 FL0 BL0 DR0 FR0 DL0 UL0 BR0 UFR0 UFL2 DBL2 DBR0 DFL1 UBR0 DFR0 UBL1 diff --git a/test/05_transform/141_DBm_F.out b/test/05_transform/141_DBm_F.out @@ -1 +1 @@ -UF0 BR1 BL1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 UB1 DB1 UFR0 UBR1 DFL0 DBL1 UFL0 DBR2 DFR0 UBL2 +UF0 BL1 BR1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 DB1 UB1 UFR0 DBL1 DFL0 UBR1 UFL0 UBL2 DFR0 DBR2 diff --git a/test/05_transform/143_DRm_U.out b/test/05_transform/143_DRm_U.out @@ -1 +1 @@ -UF0 UB0 DR0 DL0 UR0 UL0 DB0 DF0 FR0 FL0 BL0 BR0 UFR0 UBL0 DBL0 DFR0 UFL0 UBR0 DFL0 DBR0 +UF0 UB0 DL0 DR0 UR0 UL0 DF0 DB0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFR0 DBL0 UFL0 UBR0 DBR0 DFL0 diff --git a/test/05_transform/145_DRm_R.out b/test/05_transform/145_DRm_R.out @@ -1 +1 @@ -FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 DBL0 +FR1 UB0 DB0 FL1 UR0 UL0 DL0 DR0 DF1 UF1 BL0 BR0 DFR1 UBL0 UFL1 DBR0 UFR2 UBR0 DFL2 DBL0 diff --git a/test/05_transform/147_DRm_F.out b/test/05_transform/147_DRm_F.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 FR0 UL0 DL0 BR0 DR0 FL0 BL0 UR0 DFR2 UBL0 DFL0 UBR2 UFL0 UFR1 DBR1 DBL0 +UF0 UB0 DB0 DF0 UR0 FL0 BL0 DR0 FR0 DL0 UL0 BR0 UFR0 UFL2 DBL2 DBR0 DFL1 UBR0 DFR0 UBL1 diff --git a/test/05_transform/149_RUm_U.out b/test/05_transform/149_RUm_U.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 FR0 UL0 DL0 BR0 DR0 FL0 BL0 UR0 DFR2 UBL0 DFL0 UBR2 UFL0 UFR1 DBR1 DBL0 +UF0 UB0 DB0 DF0 UR0 FL0 BL0 DR0 FR0 DL0 UL0 BR0 UFR0 UFL2 DBL2 DBR0 DFL1 UBR0 DFR0 UBL1 diff --git a/test/05_transform/151_RUm_R.out b/test/05_transform/151_RUm_R.out @@ -1 +1 @@ -FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 DBL0 +FR1 UB0 DB0 FL1 UR0 UL0 DL0 DR0 DF1 UF1 BL0 BR0 DFR1 UBL0 UFL1 DBR0 UFR2 UBR0 DFL2 DBL0 diff --git a/test/05_transform/153_RUm_F.out b/test/05_transform/153_RUm_F.out @@ -1 +1 @@ -UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 +UL0 UR0 DB0 DF0 UF0 UB0 DL0 DR0 FR0 FL0 BL0 BR0 UFL0 UBR0 DFL0 DBR0 UBL0 UFR0 DFR0 DBL0 diff --git a/test/05_transform/155_RFm_U.out b/test/05_transform/155_RFm_U.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 FR0 UL0 DL0 BR0 DR0 FL0 BL0 UR0 DFR2 UBL0 DFL0 UBR2 UFL0 UFR1 DBR1 DBL0 +UF0 UB0 DB0 DF0 UR0 FL0 BL0 DR0 FR0 DL0 UL0 BR0 UFR0 UFL2 DBL2 DBR0 DFL1 UBR0 DFR0 UBL1 diff --git a/test/05_transform/157_RFm_R.out b/test/05_transform/157_RFm_R.out @@ -1 +1 @@ -UF0 UB0 DR0 DL0 UR0 UL0 DB0 DF0 FR0 FL0 BL0 BR0 UFR0 UBL0 DBL0 DFR0 UFL0 UBR0 DFL0 DBR0 +UF0 UB0 DL0 DR0 UR0 UL0 DF0 DB0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFR0 DBL0 UFL0 UBR0 DBR0 DFL0 diff --git a/test/05_transform/159_RFm_F.out b/test/05_transform/159_RFm_F.out @@ -1 +1 @@ -FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 DBL0 +FR1 UB0 DB0 FL1 UR0 UL0 DL0 DR0 DF1 UF1 BL0 BR0 DFR1 UBL0 UFL1 DBR0 UFR2 UBR0 DFL2 DBL0 diff --git a/test/05_transform/161_RDm_U.out b/test/05_transform/161_RDm_U.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 FR0 UL0 DL0 BR0 DR0 FL0 BL0 UR0 DFR2 UBL0 DFL0 UBR2 UFL0 UFR1 DBR1 DBL0 +UF0 UB0 DB0 DF0 UR0 FL0 BL0 DR0 FR0 DL0 UL0 BR0 UFR0 UFL2 DBL2 DBR0 DFL1 UBR0 DFR0 UBL1 diff --git a/test/05_transform/163_RDm_R.out b/test/05_transform/163_RDm_R.out @@ -1 +1 @@ -UF0 BR1 BL1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 UB1 DB1 UFR0 UBR1 DFL0 DBL1 UFL0 DBR2 DFR0 UBL2 +UF0 BL1 BR1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 DB1 UB1 UFR0 DBL1 DFL0 UBR1 UFL0 UBL2 DFR0 DBR2 diff --git a/test/05_transform/165_RDm_F.out b/test/05_transform/165_RDm_F.out @@ -1 +1 @@ -UF0 UB0 DR0 DL0 UR0 UL0 DB0 DF0 FR0 FL0 BL0 BR0 UFR0 UBL0 DBL0 DFR0 UFL0 UBR0 DFL0 DBR0 +UF0 UB0 DL0 DR0 UR0 UL0 DF0 DB0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFR0 DBL0 UFL0 UBR0 DBR0 DFL0 diff --git a/test/05_transform/167_RBm_U.out b/test/05_transform/167_RBm_U.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 FR0 UL0 DL0 BR0 DR0 FL0 BL0 UR0 DFR2 UBL0 DFL0 UBR2 UFL0 UFR1 DBR1 DBL0 +UF0 UB0 DB0 DF0 UR0 FL0 BL0 DR0 FR0 DL0 UL0 BR0 UFR0 UFL2 DBL2 DBR0 DFL1 UBR0 DFR0 UBL1 diff --git a/test/05_transform/169_RBm_R.out b/test/05_transform/169_RBm_R.out @@ -1 +1 @@ -UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 +UL0 UR0 DB0 DF0 UF0 UB0 DL0 DR0 FR0 FL0 BL0 BR0 UFL0 UBR0 DFL0 DBR0 UBL0 UFR0 DFR0 DBL0 diff --git a/test/05_transform/171_RBm_F.out b/test/05_transform/171_RBm_F.out @@ -1 +1 @@ -UF0 BR1 BL1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 UB1 DB1 UFR0 UBR1 DFL0 DBL1 UFL0 DBR2 DFR0 UBL2 +UF0 BL1 BR1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 DB1 UB1 UFR0 DBL1 DFL0 UBR1 UFL0 UBL2 DFR0 DBR2 diff --git a/test/05_transform/173_LUm_U.out b/test/05_transform/173_LUm_U.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 UR0 BL0 FL0 DR0 FR0 UL0 DL0 BR0 UFR0 DBL2 UFL2 DBR0 UBL1 UBR0 DFR0 DFL1 +UF0 UB0 DB0 DF0 BR0 UL0 DL0 FR0 UR0 FL0 BL0 DR0 UBR2 UBL0 DFL0 DFR2 UFL0 DBR1 UFR1 DBL0 diff --git a/test/05_transform/175_LUm_R.out b/test/05_transform/175_LUm_R.out @@ -1 +1 @@ -UF0 BR1 BL1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 UB1 DB1 UFR0 UBR1 DFL0 DBL1 UFL0 DBR2 DFR0 UBL2 +UF0 BL1 BR1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 DB1 UB1 UFR0 DBL1 DFL0 UBR1 UFL0 UBL2 DFR0 DBR2 diff --git a/test/05_transform/177_LUm_F.out b/test/05_transform/177_LUm_F.out @@ -1 +1 @@ -UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 +UL0 UR0 DB0 DF0 UF0 UB0 DL0 DR0 FR0 FL0 BL0 BR0 UFL0 UBR0 DFL0 DBR0 UBL0 UFR0 DFR0 DBL0 diff --git a/test/05_transform/179_LFm_U.out b/test/05_transform/179_LFm_U.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 UR0 BL0 FL0 DR0 FR0 UL0 DL0 BR0 UFR0 DBL2 UFL2 DBR0 UBL1 UBR0 DFR0 DFL1 +UF0 UB0 DB0 DF0 BR0 UL0 DL0 FR0 UR0 FL0 BL0 DR0 UBR2 UBL0 DFL0 DFR2 UFL0 DBR1 UFR1 DBL0 diff --git a/test/05_transform/181_LFm_R.out b/test/05_transform/181_LFm_R.out @@ -1 +1 @@ -UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 +UL0 UR0 DB0 DF0 UF0 UB0 DL0 DR0 FR0 FL0 BL0 BR0 UFL0 UBR0 DFL0 DBR0 UBL0 UFR0 DFR0 DBL0 diff --git a/test/05_transform/183_LFm_F.out b/test/05_transform/183_LFm_F.out @@ -1 +1 @@ -FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 DBL0 +FR1 UB0 DB0 FL1 UR0 UL0 DL0 DR0 DF1 UF1 BL0 BR0 DFR1 UBL0 UFL1 DBR0 UFR2 UBR0 DFL2 DBL0 diff --git a/test/05_transform/185_LDm_U.out b/test/05_transform/185_LDm_U.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 UR0 BL0 FL0 DR0 FR0 UL0 DL0 BR0 UFR0 DBL2 UFL2 DBR0 UBL1 UBR0 DFR0 DFL1 +UF0 UB0 DB0 DF0 BR0 UL0 DL0 FR0 UR0 FL0 BL0 DR0 UBR2 UBL0 DFL0 DFR2 UFL0 DBR1 UFR1 DBL0 diff --git a/test/05_transform/187_LDm_R.out b/test/05_transform/187_LDm_R.out @@ -1 +1 @@ -FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 DBL0 +FR1 UB0 DB0 FL1 UR0 UL0 DL0 DR0 DF1 UF1 BL0 BR0 DFR1 UBL0 UFL1 DBR0 UFR2 UBR0 DFL2 DBL0 diff --git a/test/05_transform/189_LDm_F.out b/test/05_transform/189_LDm_F.out @@ -1 +1 @@ -UF0 UB0 DR0 DL0 UR0 UL0 DB0 DF0 FR0 FL0 BL0 BR0 UFR0 UBL0 DBL0 DFR0 UFL0 UBR0 DFL0 DBR0 +UF0 UB0 DL0 DR0 UR0 UL0 DF0 DB0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFR0 DBL0 UFL0 UBR0 DBR0 DFL0 diff --git a/test/05_transform/191_LBm_U.out b/test/05_transform/191_LBm_U.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 UR0 BL0 FL0 DR0 FR0 UL0 DL0 BR0 UFR0 DBL2 UFL2 DBR0 UBL1 UBR0 DFR0 DFL1 +UF0 UB0 DB0 DF0 BR0 UL0 DL0 FR0 UR0 FL0 BL0 DR0 UBR2 UBL0 DFL0 DFR2 UFL0 DBR1 UFR1 DBL0 diff --git a/test/05_transform/193_LBm_R.out b/test/05_transform/193_LBm_R.out @@ -1 +1 @@ -UF0 UB0 DR0 DL0 UR0 UL0 DB0 DF0 FR0 FL0 BL0 BR0 UFR0 UBL0 DBL0 DFR0 UFL0 UBR0 DFL0 DBR0 +UF0 UB0 DL0 DR0 UR0 UL0 DF0 DB0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFR0 DBL0 UFL0 UBR0 DBR0 DFL0 diff --git a/test/05_transform/195_LBm_F.out b/test/05_transform/195_LBm_F.out @@ -1 +1 @@ -UF0 BR1 BL1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 UB1 DB1 UFR0 UBR1 DFL0 DBL1 UFL0 DBR2 DFR0 UBL2 +UF0 BL1 BR1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 DB1 UB1 UFR0 DBL1 DFL0 UBR1 UFL0 UBL2 DFR0 DBR2 diff --git a/test/05_transform/197_FUm_U.out b/test/05_transform/197_FUm_U.out @@ -1 +1 @@ -FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 DBL0 +FR1 UB0 DB0 FL1 UR0 UL0 DL0 DR0 DF1 UF1 BL0 BR0 DFR1 UBL0 UFL1 DBR0 UFR2 UBR0 DFL2 DBL0 diff --git a/test/05_transform/199_FUm_R.out b/test/05_transform/199_FUm_R.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 UR0 BL0 FL0 DR0 FR0 UL0 DL0 BR0 UFR0 DBL2 UFL2 DBR0 UBL1 UBR0 DFR0 DFL1 +UF0 UB0 DB0 DF0 BR0 UL0 DL0 FR0 UR0 FL0 BL0 DR0 UBR2 UBL0 DFL0 DFR2 UFL0 DBR1 UFR1 DBL0 diff --git a/test/05_transform/201_FUm_F.out b/test/05_transform/201_FUm_F.out @@ -1 +1 @@ -UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 +UL0 UR0 DB0 DF0 UF0 UB0 DL0 DR0 FR0 FL0 BL0 BR0 UFL0 UBR0 DFL0 DBR0 UBL0 UFR0 DFR0 DBL0 diff --git a/test/05_transform/203_FRm_U.out b/test/05_transform/203_FRm_U.out @@ -1 +1 @@ -FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 DBL0 +FR1 UB0 DB0 FL1 UR0 UL0 DL0 DR0 DF1 UF1 BL0 BR0 DFR1 UBL0 UFL1 DBR0 UFR2 UBR0 DFL2 DBL0 diff --git a/test/05_transform/205_FRm_R.out b/test/05_transform/205_FRm_R.out @@ -1 +1 @@ -UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 +UL0 UR0 DB0 DF0 UF0 UB0 DL0 DR0 FR0 FL0 BL0 BR0 UFL0 UBR0 DFL0 DBR0 UBL0 UFR0 DFR0 DBL0 diff --git a/test/05_transform/207_FRm_F.out b/test/05_transform/207_FRm_F.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 FR0 UL0 DL0 BR0 DR0 FL0 BL0 UR0 DFR2 UBL0 DFL0 UBR2 UFL0 UFR1 DBR1 DBL0 +UF0 UB0 DB0 DF0 UR0 FL0 BL0 DR0 FR0 DL0 UL0 BR0 UFR0 UFL2 DBL2 DBR0 DFL1 UBR0 DFR0 UBL1 diff --git a/test/05_transform/209_FDm_U.out b/test/05_transform/209_FDm_U.out @@ -1 +1 @@ -FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 DBL0 +FR1 UB0 DB0 FL1 UR0 UL0 DL0 DR0 DF1 UF1 BL0 BR0 DFR1 UBL0 UFL1 DBR0 UFR2 UBR0 DFL2 DBL0 diff --git a/test/05_transform/211_FDm_R.out b/test/05_transform/211_FDm_R.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 FR0 UL0 DL0 BR0 DR0 FL0 BL0 UR0 DFR2 UBL0 DFL0 UBR2 UFL0 UFR1 DBR1 DBL0 +UF0 UB0 DB0 DF0 UR0 FL0 BL0 DR0 FR0 DL0 UL0 BR0 UFR0 UFL2 DBL2 DBR0 DFL1 UBR0 DFR0 UBL1 diff --git a/test/05_transform/213_FDm_F.out b/test/05_transform/213_FDm_F.out @@ -1 +1 @@ -UF0 UB0 DR0 DL0 UR0 UL0 DB0 DF0 FR0 FL0 BL0 BR0 UFR0 UBL0 DBL0 DFR0 UFL0 UBR0 DFL0 DBR0 +UF0 UB0 DL0 DR0 UR0 UL0 DF0 DB0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFR0 DBL0 UFL0 UBR0 DBR0 DFL0 diff --git a/test/05_transform/215_FLm_U.out b/test/05_transform/215_FLm_U.out @@ -1 +1 @@ -FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 DBL0 +FR1 UB0 DB0 FL1 UR0 UL0 DL0 DR0 DF1 UF1 BL0 BR0 DFR1 UBL0 UFL1 DBR0 UFR2 UBR0 DFL2 DBL0 diff --git a/test/05_transform/217_FLm_R.out b/test/05_transform/217_FLm_R.out @@ -1 +1 @@ -UF0 UB0 DR0 DL0 UR0 UL0 DB0 DF0 FR0 FL0 BL0 BR0 UFR0 UBL0 DBL0 DFR0 UFL0 UBR0 DFL0 DBR0 +UF0 UB0 DL0 DR0 UR0 UL0 DF0 DB0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFR0 DBL0 UFL0 UBR0 DBR0 DFL0 diff --git a/test/05_transform/219_FLm_F.out b/test/05_transform/219_FLm_F.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 UR0 BL0 FL0 DR0 FR0 UL0 DL0 BR0 UFR0 DBL2 UFL2 DBR0 UBL1 UBR0 DFR0 DFL1 +UF0 UB0 DB0 DF0 BR0 UL0 DL0 FR0 UR0 FL0 BL0 DR0 UBR2 UBL0 DFL0 DFR2 UFL0 DBR1 UFR1 DBL0 diff --git a/test/05_transform/221_BUm_U.out b/test/05_transform/221_BUm_U.out @@ -1 +1 @@ -UF0 BR1 BL1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 UB1 DB1 UFR0 UBR1 DFL0 DBL1 UFL0 DBR2 DFR0 UBL2 +UF0 BL1 BR1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 DB1 UB1 UFR0 DBL1 DFL0 UBR1 UFL0 UBL2 DFR0 DBR2 diff --git a/test/05_transform/223_BUm_R.out b/test/05_transform/223_BUm_R.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 FR0 UL0 DL0 BR0 DR0 FL0 BL0 UR0 DFR2 UBL0 DFL0 UBR2 UFL0 UFR1 DBR1 DBL0 +UF0 UB0 DB0 DF0 UR0 FL0 BL0 DR0 FR0 DL0 UL0 BR0 UFR0 UFL2 DBL2 DBR0 DFL1 UBR0 DFR0 UBL1 diff --git a/test/05_transform/225_BUm_F.out b/test/05_transform/225_BUm_F.out @@ -1 +1 @@ -UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 +UL0 UR0 DB0 DF0 UF0 UB0 DL0 DR0 FR0 FL0 BL0 BR0 UFL0 UBR0 DFL0 DBR0 UBL0 UFR0 DFR0 DBL0 diff --git a/test/05_transform/227_BRm_U.out b/test/05_transform/227_BRm_U.out @@ -1 +1 @@ -UF0 BR1 BL1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 UB1 DB1 UFR0 UBR1 DFL0 DBL1 UFL0 DBR2 DFR0 UBL2 +UF0 BL1 BR1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 DB1 UB1 UFR0 DBL1 DFL0 UBR1 UFL0 UBL2 DFR0 DBR2 diff --git a/test/05_transform/229_BRm_R.out b/test/05_transform/229_BRm_R.out @@ -1 +1 @@ -UF0 UB0 DR0 DL0 UR0 UL0 DB0 DF0 FR0 FL0 BL0 BR0 UFR0 UBL0 DBL0 DFR0 UFL0 UBR0 DFL0 DBR0 +UF0 UB0 DL0 DR0 UR0 UL0 DF0 DB0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFR0 DBL0 UFL0 UBR0 DBR0 DFL0 diff --git a/test/05_transform/231_BRm_F.out b/test/05_transform/231_BRm_F.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 FR0 UL0 DL0 BR0 DR0 FL0 BL0 UR0 DFR2 UBL0 DFL0 UBR2 UFL0 UFR1 DBR1 DBL0 +UF0 UB0 DB0 DF0 UR0 FL0 BL0 DR0 FR0 DL0 UL0 BR0 UFR0 UFL2 DBL2 DBR0 DFL1 UBR0 DFR0 UBL1 diff --git a/test/05_transform/233_BDm_U.out b/test/05_transform/233_BDm_U.out @@ -1 +1 @@ -UF0 BR1 BL1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 UB1 DB1 UFR0 UBR1 DFL0 DBL1 UFL0 DBR2 DFR0 UBL2 +UF0 BL1 BR1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 DB1 UB1 UFR0 DBL1 DFL0 UBR1 UFL0 UBL2 DFR0 DBR2 diff --git a/test/05_transform/235_BDm_R.out b/test/05_transform/235_BDm_R.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 UR0 BL0 FL0 DR0 FR0 UL0 DL0 BR0 UFR0 DBL2 UFL2 DBR0 UBL1 UBR0 DFR0 DFL1 +UF0 UB0 DB0 DF0 BR0 UL0 DL0 FR0 UR0 FL0 BL0 DR0 UBR2 UBL0 DFL0 DFR2 UFL0 DBR1 UFR1 DBL0 diff --git a/test/05_transform/237_BDm_F.out b/test/05_transform/237_BDm_F.out @@ -1 +1 @@ -UF0 UB0 DR0 DL0 UR0 UL0 DB0 DF0 FR0 FL0 BL0 BR0 UFR0 UBL0 DBL0 DFR0 UFL0 UBR0 DFL0 DBR0 +UF0 UB0 DL0 DR0 UR0 UL0 DF0 DB0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFR0 DBL0 UFL0 UBR0 DBR0 DFL0 diff --git a/test/05_transform/239_BLm_U.out b/test/05_transform/239_BLm_U.out @@ -1 +1 @@ -UF0 BR1 BL1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 UB1 DB1 UFR0 UBR1 DFL0 DBL1 UFL0 DBR2 DFR0 UBL2 +UF0 BL1 BR1 DF0 UR0 UL0 DL0 DR0 FR0 FL0 DB1 UB1 UFR0 DBL1 DFL0 UBR1 UFL0 UBL2 DFR0 DBR2 diff --git a/test/05_transform/241_BLm_R.out b/test/05_transform/241_BLm_R.out @@ -1 +1 @@ -UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 +UL0 UR0 DB0 DF0 UF0 UB0 DL0 DR0 FR0 FL0 BL0 BR0 UFL0 UBR0 DFL0 DBR0 UBL0 UFR0 DFR0 DBL0 diff --git a/test/05_transform/243_BLm_F.out b/test/05_transform/243_BLm_F.out @@ -1 +1 @@ -UF0 UB0 DB0 DF0 UR0 BL0 FL0 DR0 FR0 UL0 DL0 BR0 UFR0 DBL2 UFL2 DBR0 UBL1 UBR0 DFR0 DFL1 +UF0 UB0 DB0 DF0 BR0 UL0 DL0 FR0 UR0 FL0 BL0 DR0 UBR2 UBL0 DFL0 DFR2 UFL0 DBR1 UFR1 DBL0 diff --git a/utils/gentranscode.sh b/utils/gentranscode.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +gcc -DDEBUG h48_to_src.c ../src/cube.c + +for f in transform_??_???.txt; do + trans="$(echo $f | sed 's/.*_// ; s/\.txt//')" + printf '[%s] = ' "$trans" + ./a.out <"$f" + printf ',\n' +done + +rm a.out diff --git a/utils/gentranstests.sh b/utils/gentranstests.sh @@ -23,9 +23,10 @@ while read -r line; do i=$((i+1)) mirrored="mirrored $trans_piece" + move2m="$(echo ${move2} | tr 'LR' 'RL')3" file1="$(ls | grep move_*_${move1}.txt)" - file2="$(ls | grep move_*_${move2}.txt)" + file2="$(ls | grep move_*_${move2m}.txt)" echo "$mirrored" >"$outdir/${i}_${trans_piece}m_${move1}.in" cat "$file1" >>"$outdir/${i}_${trans_piece}m_${move1}.in" cp "$file2" "$outdir/${i}_${trans_piece}m_${move1}.out" diff --git a/utils/h48_to_src.c b/utils/h48_to_src.c @@ -0,0 +1,20 @@ +#include <stdio.h> +#include <inttypes.h> +#include <stdbool.h> + +#include "../src/cube.h" + +#define STRLENMAX 1000 + +int main() { + char str[STRLENMAX]; + cube_t cube; + + fgets(str, STRLENMAX, stdin); + cube = readcube(H48, str); + writecube(SRC, cube, str); + fputs(str, stdout); + /* putc('\n', stdout); */ + + return 0; +} diff --git a/utils/trans_move_array.txt b/utils/trans_move_array.txt @@ -0,0 +1,192 @@ +[UFr] = { + .c = {0, 1, 2, 3, 4, 5, 6, 7}, + .e = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} +}, +[ULr] = { + .c = {4, 5, 7, 6, 1, 0, 2, 3}, + .e = {5, 4, 7, 6, 0, 1, 2, 3, 25, 26, 27, 24} +}, +[UBr] = { + .c = {1, 0, 3, 2, 5, 4, 7, 6}, + .e = {1, 0, 3, 2, 5, 4, 7, 6, 10, 11, 8, 9} +}, +[URr] = { + .c = {5, 4, 6, 7, 0, 1, 3, 2}, + .e = {4, 5, 6, 7, 1, 0, 3, 2, 27, 24, 25, 26} +}, +[DFr] = { + .c = {2, 3, 0, 1, 6, 7, 4, 5}, + .e = {3, 2, 1, 0, 6, 7, 4, 5, 9, 8, 11, 10} +}, +[DLr] = { + .c = {7, 6, 4, 5, 2, 3, 1, 0}, + .e = {6, 7, 4, 5, 2, 3, 0, 1, 26, 25, 24, 27} +}, +[DBr] = { + .c = {3, 2, 1, 0, 7, 6, 5, 4}, + .e = {2, 3, 0, 1, 7, 6, 5, 4, 11, 10, 9, 8} +}, +[DRr] = { + .c = {6, 7, 5, 4, 3, 2, 0, 1}, + .e = {7, 6, 5, 4, 3, 2, 1, 0, 24, 27, 26, 25} +}, +[RUr] = { + .c = {64, 67, 65, 66, 37, 38, 36, 39}, + .e = {20, 23, 22, 21, 24, 27, 26, 25, 0, 1, 2, 3} +}, +[RFr] = { + .c = {38, 37, 36, 39, 64, 67, 66, 65}, + .e = {24, 27, 26, 25, 23, 20, 21, 22, 19, 16, 17, 18} +}, +[RDr] = { + .c = {67, 64, 66, 65, 38, 37, 39, 36}, + .e = {23, 20, 21, 22, 27, 24, 25, 26, 2, 3, 0, 1} +}, +[RBr] = { + .c = {37, 38, 39, 36, 67, 64, 65, 66}, + .e = {27, 24, 25, 26, 20, 23, 22, 21, 17, 18, 19, 16} +}, +[LUr] = { + .c = {65, 66, 64, 67, 36, 39, 37, 38}, + .e = {21, 22, 23, 20, 26, 25, 24, 27, 1, 0, 3, 2} +}, +[LFr] = { + .c = {36, 39, 38, 37, 66, 65, 64, 67}, + .e = {25, 26, 27, 24, 21, 22, 23, 20, 16, 19, 18, 17} +}, +[LDr] = { + .c = {66, 65, 67, 64, 39, 36, 38, 37}, + .e = {22, 21, 20, 23, 25, 26, 27, 24, 3, 2, 1, 0} +}, +[LBr] = { + .c = {39, 36, 37, 38, 65, 66, 67, 64}, + .e = {26, 25, 24, 27, 22, 21, 20, 23, 18, 17, 16, 19} +}, +[FUr] = { + .c = {68, 70, 69, 71, 32, 34, 33, 35}, + .e = {16, 19, 18, 17, 9, 8, 11, 10, 5, 4, 7, 6} +}, +[FRr] = { + .c = {32, 34, 35, 33, 70, 68, 69, 71}, + .e = {8, 9, 10, 11, 16, 19, 18, 17, 20, 23, 22, 21} +}, +[FDr] = { + .c = {70, 68, 71, 69, 34, 32, 35, 33}, + .e = {19, 16, 17, 18, 8, 9, 10, 11, 7, 6, 5, 4} +}, +[FLr] = { + .c = {34, 32, 33, 35, 68, 70, 71, 69}, + .e = {9, 8, 11, 10, 19, 16, 17, 18, 22, 21, 20, 23} +}, +[BUr] = { + .c = {69, 71, 68, 70, 33, 35, 32, 34}, + .e = {17, 18, 19, 16, 11, 10, 9, 8, 4, 5, 6, 7} +}, +[BRr] = { + .c = {35, 33, 32, 34, 69, 71, 70, 68}, + .e = {11, 10, 9, 8, 18, 17, 16, 19, 23, 20, 21, 22} +}, +[BDr] = { + .c = {71, 69, 70, 68, 35, 33, 34, 32}, + .e = {18, 17, 16, 19, 10, 11, 8, 9, 6, 7, 4, 5} +}, +[BLr] = { + .c = {33, 35, 34, 32, 71, 69, 68, 70}, + .e = {10, 11, 8, 9, 17, 18, 19, 16, 21, 22, 23, 20} +}, +[UFm] = { + .c = {4, 5, 6, 7, 0, 1, 2, 3}, + .e = {0, 1, 2, 3, 5, 4, 7, 6, 9, 8, 11, 10} +}, +[ULm] = { + .c = {0, 1, 3, 2, 5, 4, 6, 7}, + .e = {4, 5, 6, 7, 0, 1, 2, 3, 24, 27, 26, 25} +}, +[UBm] = { + .c = {5, 4, 7, 6, 1, 0, 3, 2}, + .e = {1, 0, 3, 2, 4, 5, 6, 7, 11, 10, 9, 8} +}, +[URm] = { + .c = {1, 0, 2, 3, 4, 5, 7, 6}, + .e = {5, 4, 7, 6, 1, 0, 3, 2, 26, 25, 24, 27} +}, +[DFm] = { + .c = {6, 7, 4, 5, 2, 3, 0, 1}, + .e = {3, 2, 1, 0, 7, 6, 5, 4, 8, 9, 10, 11} +}, +[DLm] = { + .c = {3, 2, 0, 1, 6, 7, 5, 4}, + .e = {7, 6, 5, 4, 2, 3, 0, 1, 27, 24, 25, 26} +}, +[DBm] = { + .c = {7, 6, 5, 4, 3, 2, 1, 0}, + .e = {2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9} +}, +[DRm] = { + .c = {2, 3, 1, 0, 7, 6, 4, 5}, + .e = {6, 7, 4, 5, 3, 2, 1, 0, 25, 26, 27, 24} +}, +[RUm] = { + .c = {68, 71, 69, 70, 33, 34, 32, 35}, + .e = {21, 22, 23, 20, 25, 26, 27, 24, 0, 1, 2, 3} +}, +[RFm] = { + .c = {34, 33, 32, 35, 68, 71, 70, 69}, + .e = {25, 26, 27, 24, 22, 21, 20, 23, 19, 16, 17, 18} +}, +[RDm] = { + .c = {71, 68, 70, 69, 34, 33, 35, 32}, + .e = {22, 21, 20, 23, 26, 25, 24, 27, 2, 3, 0, 1} +}, +[RBm] = { + .c = {33, 34, 35, 32, 71, 68, 69, 70}, + .e = {26, 25, 24, 27, 21, 22, 23, 20, 17, 18, 19, 16} +}, +[LUm] = { + .c = {69, 70, 68, 71, 32, 35, 33, 34}, + .e = {20, 23, 22, 21, 27, 24, 25, 26, 1, 0, 3, 2} +}, +[LFm] = { + .c = {32, 35, 34, 33, 70, 69, 68, 71}, + .e = {24, 27, 26, 25, 20, 23, 22, 21, 16, 19, 18, 17} +}, +[LDm] = { + .c = {70, 69, 71, 68, 35, 32, 34, 33}, + .e = {23, 20, 21, 22, 24, 27, 26, 25, 3, 2, 1, 0} +}, +[LBm] = { + .c = {35, 32, 33, 34, 69, 70, 71, 68}, + .e = {27, 24, 25, 26, 23, 20, 21, 22, 18, 17, 16, 19} +}, +[FUm] = { + .c = {64, 66, 65, 67, 36, 38, 37, 39}, + .e = {16, 19, 18, 17, 8, 9, 10, 11, 4, 5, 6, 7} +}, +[FRm] = { + .c = {36, 38, 39, 37, 66, 64, 65, 67}, + .e = {9, 8, 11, 10, 16, 19, 18, 17, 21, 22, 23, 20} +}, +[FDm] = { + .c = {66, 64, 67, 65, 38, 36, 39, 37}, + .e = {19, 16, 17, 18, 9, 8, 11, 10, 6, 7, 4, 5} +}, +[FLm] = { + .c = {38, 36, 37, 39, 64, 66, 67, 65}, + .e = {8, 9, 10, 11, 19, 16, 17, 18, 23, 20, 21, 22} +}, +[BUm] = { + .c = {65, 67, 64, 66, 37, 39, 36, 38}, + .e = {17, 18, 19, 16, 10, 11, 8, 9, 5, 4, 7, 6} +}, +[BRm] = { + .c = {39, 37, 36, 38, 65, 67, 66, 64}, + .e = {10, 11, 8, 9, 18, 17, 16, 19, 22, 21, 20, 23} +}, +[BDm] = { + .c = {67, 65, 66, 64, 39, 37, 38, 36}, + .e = {18, 17, 16, 19, 11, 10, 9, 8, 7, 6, 5, 4} +}, +[BLm] = { + .c = {37, 39, 38, 36, 67, 65, 64, 66}, + .e = {11, 10, 9, 8, 17, 18, 19, 16, 20, 23, 22, 21} +},