aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2023-10-27 17:16:58 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2023-10-27 17:16:58 +0200
commit989e933fc557cbc1e9e16e45033387816ee6075e (patch)
tree867ee23bdaf6ba1e0e5f001d1a15e3bb46fa3bc3 /src
parent2a8d66906dde19ffb7315fb3f60a396a71612037 (diff)
downloadnissy-core-989e933fc557cbc1e9e16e45033387816ee6075e.tar.gz
nissy-core-989e933fc557cbc1e9e16e45033387816ee6075e.zip
Improved transformations and cleaned up
Diffstat (limited to '')
-rw-r--r--src/cube.c270
-rw-r--r--src/cube.h2
-rw-r--r--src/trans_move_arr.h389
3 files changed, 465 insertions, 196 deletions
diff --git a/src/cube.c b/src/cube.c
index 87570b4..0d97635 100644
--- a/src/cube.c
+++ b/src/cube.c
@@ -42,6 +42,78 @@
42#define _eflip 0x10U 42#define _eflip 0x10U
43#define _error 0xFFU 43#define _error 0xFFU
44 44
45move_t inverse_move[] = {
46 [U] = U3,
47 [U2] = U2,
48 [U3] = U,
49 [D] = D3,
50 [D2] = D2,
51 [D3] = D,
52 [R] = R3,
53 [R2] = R2,
54 [R3] = R,
55 [L] = L3,
56 [L2] = L2,
57 [L3] = L,
58 [F] = F3,
59 [F2] = F2,
60 [F3] = F,
61 [B] = B3,
62 [B2] = B2,
63 [B3] = B,
64};
65
66trans_t inverse_trans[] = {
67 [UFr] = UFr,
68 [ULr] = URr,
69 [UBr] = UBr,
70 [URr] = URr,
71 [DFr] = DFr,
72 [DLr] = DLr,
73 [DRr] = DRr,
74 [DBr] = DBr,
75 [RUr] = FRr,
76 [RFr] = LFr,
77 [RDr] = BLr,
78 [RBr] = RBr,
79 [LUr] = FLr,
80 [LFr] = RFr,
81 [LDr] = BRr,
82 [LBr] = LBr,
83 [FUr] = FUr,
84 [FRr] = RUr,
85 [FDr] = BUr,
86 [FLr] = LUr,
87 [BUr] = FDr,
88 [BLr] = RDr,
89 [BDr] = BDr,
90 [BRr] = LDr,
91 [UFm] = UFm,
92 [ULm] = ULm,
93 [UBm] = UBm,
94 [URm] = ULm,
95 [DFm] = DFm,
96 [DLm] = DRm,
97 [DRm] = DLm,
98 [DBm] = DBm,
99 [RUm] = FLm,
100 [RFm] = RFm,
101 [RDm] = BRm,
102 [RBm] = LBm,
103 [LUm] = FRm,
104 [LFm] = LFm,
105 [LDm] = BLm,
106 [LBm] = RBm,
107 [FUm] = FUm,
108 [FRm] = LUm,
109 [FDm] = BUm,
110 [FLm] = RUm,
111 [BUm] = FDm,
112 [BLm] = LDm,
113 [BDm] = BDm,
114 [BRm] = RDm,
115};
116
45static char *cornerstr[] = { 117static char *cornerstr[] = {
46 [_c_ufr] = "UFR", 118 [_c_ufr] = "UFR",
47 [_c_ubl] = "UBL", 119 [_c_ubl] = "UBL",
@@ -894,200 +966,7 @@ flipallcorners(cube_t c)
894cube_t 966cube_t
895transform(cube_t c, trans_t t) 967transform(cube_t c, trans_t t)
896{ 968{
897 static cube_t trans_move_cube[] = { 969#include "trans_move_arr.h"
898 [UFr] = {
899 .c = {0, 1, 2, 3, 4, 5, 6, 7},
900 .e = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
901 },
902 [ULr] = {
903 .c = {4, 5, 7, 6, 1, 0, 2, 3},
904 .e = {5, 4, 7, 6, 0, 1, 2, 3, 25, 26, 27, 24}
905 },
906 [UBr] = {
907 .c = {1, 0, 3, 2, 5, 4, 7, 6},
908 .e = {1, 0, 3, 2, 5, 4, 7, 6, 10, 11, 8, 9}
909 },
910 [URr] = {
911 .c = {5, 4, 6, 7, 0, 1, 3, 2},
912 .e = {4, 5, 6, 7, 1, 0, 3, 2, 27, 24, 25, 26}
913 },
914 [DFr] = {
915 .c = {2, 3, 0, 1, 6, 7, 4, 5},
916 .e = {3, 2, 1, 0, 6, 7, 4, 5, 9, 8, 11, 10}
917 },
918 [DLr] = {
919 .c = {7, 6, 4, 5, 2, 3, 1, 0},
920 .e = {6, 7, 4, 5, 2, 3, 0, 1, 26, 25, 24, 27}
921 },
922 [DBr] = {
923 .c = {3, 2, 1, 0, 7, 6, 5, 4},
924 .e = {2, 3, 0, 1, 7, 6, 5, 4, 11, 10, 9, 8}
925 },
926 [DRr] = {
927 .c = {6, 7, 5, 4, 3, 2, 0, 1},
928 .e = {7, 6, 5, 4, 3, 2, 1, 0, 24, 27, 26, 25}
929 },
930 [RUr] = {
931 .c = {64, 67, 65, 66, 37, 38, 36, 39},
932 .e = {20, 23, 22, 21, 24, 27, 26, 25, 0, 1, 2, 3}
933 },
934 [RFr] = {
935 .c = {38, 37, 36, 39, 64, 67, 66, 65},
936 .e = {24, 27, 26, 25, 23, 20, 21, 22, 19, 16, 17, 18}
937 },
938 [RDr] = {
939 .c = {67, 64, 66, 65, 38, 37, 39, 36},
940 .e = {23, 20, 21, 22, 27, 24, 25, 26, 2, 3, 0, 1}
941 },
942 [RBr] = {
943 .c = {37, 38, 39, 36, 67, 64, 65, 66},
944 .e = {27, 24, 25, 26, 20, 23, 22, 21, 17, 18, 19, 16}
945 },
946 [LUr] = {
947 .c = {65, 66, 64, 67, 36, 39, 37, 38},
948 .e = {21, 22, 23, 20, 26, 25, 24, 27, 1, 0, 3, 2}
949 },
950 [LFr] = {
951 .c = {36, 39, 38, 37, 66, 65, 64, 67},
952 .e = {25, 26, 27, 24, 21, 22, 23, 20, 16, 19, 18, 17}
953 },
954 [LDr] = {
955 .c = {66, 65, 67, 64, 39, 36, 38, 37},
956 .e = {22, 21, 20, 23, 25, 26, 27, 24, 3, 2, 1, 0}
957 },
958 [LBr] = {
959 .c = {39, 36, 37, 38, 65, 66, 67, 64},
960 .e = {26, 25, 24, 27, 22, 21, 20, 23, 18, 17, 16, 19}
961 },
962 [FUr] = {
963 .c = {68, 70, 69, 71, 32, 34, 33, 35},
964 .e = {16, 19, 18, 17, 9, 8, 11, 10, 5, 4, 7, 6}
965 },
966 [FRr] = {
967 .c = {32, 34, 35, 33, 70, 68, 69, 71},
968 .e = {8, 9, 10, 11, 16, 19, 18, 17, 20, 23, 22, 21}
969 },
970 [FDr] = {
971 .c = {70, 68, 71, 69, 34, 32, 35, 33},
972 .e = {19, 16, 17, 18, 8, 9, 10, 11, 7, 6, 5, 4}
973 },
974 [FLr] = {
975 .c = {34, 32, 33, 35, 68, 70, 71, 69},
976 .e = {9, 8, 11, 10, 19, 16, 17, 18, 22, 21, 20, 23}
977 },
978 [BUr] = {
979 .c = {69, 71, 68, 70, 33, 35, 32, 34},
980 .e = {17, 18, 19, 16, 11, 10, 9, 8, 4, 5, 6, 7}
981 },
982 [BRr] = {
983 .c = {35, 33, 32, 34, 69, 71, 70, 68},
984 .e = {11, 10, 9, 8, 18, 17, 16, 19, 23, 20, 21, 22}
985 },
986 [BDr] = {
987 .c = {71, 69, 70, 68, 35, 33, 34, 32},
988 .e = {18, 17, 16, 19, 10, 11, 8, 9, 6, 7, 4, 5}
989 },
990 [BLr] = {
991 .c = {33, 35, 34, 32, 71, 69, 68, 70},
992 .e = {10, 11, 8, 9, 17, 18, 19, 16, 21, 22, 23, 20}
993 },
994 [UFm] = {
995 .c = {4, 5, 6, 7, 0, 1, 2, 3},
996 .e = {0, 1, 2, 3, 5, 4, 7, 6, 9, 8, 11, 10}
997 },
998 [ULm] = {
999 .c = {0, 1, 3, 2, 5, 4, 6, 7},
1000 .e = {4, 5, 6, 7, 0, 1, 2, 3, 24, 27, 26, 25}
1001 },
1002 [UBm] = {
1003 .c = {5, 4, 7, 6, 1, 0, 3, 2},
1004 .e = {1, 0, 3, 2, 4, 5, 6, 7, 11, 10, 9, 8}
1005 },
1006 [URm] = {
1007 .c = {1, 0, 2, 3, 4, 5, 7, 6},
1008 .e = {5, 4, 7, 6, 1, 0, 3, 2, 26, 25, 24, 27}
1009 },
1010 [DFm] = {
1011 .c = {6, 7, 4, 5, 2, 3, 0, 1},
1012 .e = {3, 2, 1, 0, 7, 6, 5, 4, 8, 9, 10, 11}
1013 },
1014 [DLm] = {
1015 .c = {3, 2, 0, 1, 6, 7, 5, 4},
1016 .e = {7, 6, 5, 4, 2, 3, 0, 1, 27, 24, 25, 26}
1017 },
1018 [DBm] = {
1019 .c = {7, 6, 5, 4, 3, 2, 1, 0},
1020 .e = {2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9}
1021 },
1022 [DRm] = {
1023 .c = {2, 3, 1, 0, 7, 6, 4, 5},
1024 .e = {6, 7, 4, 5, 3, 2, 1, 0, 25, 26, 27, 24}
1025 },
1026 [RUm] = {
1027 .c = {68, 71, 69, 70, 33, 34, 32, 35},
1028 .e = {21, 22, 23, 20, 25, 26, 27, 24, 0, 1, 2, 3}
1029 },
1030 [RFm] = {
1031 .c = {34, 33, 32, 35, 68, 71, 70, 69},
1032 .e = {25, 26, 27, 24, 22, 21, 20, 23, 19, 16, 17, 18}
1033 },
1034 [RDm] = {
1035 .c = {71, 68, 70, 69, 34, 33, 35, 32},
1036 .e = {22, 21, 20, 23, 26, 25, 24, 27, 2, 3, 0, 1}
1037 },
1038 [RBm] = {
1039 .c = {33, 34, 35, 32, 71, 68, 69, 70},
1040 .e = {26, 25, 24, 27, 21, 22, 23, 20, 17, 18, 19, 16}
1041 },
1042 [LUm] = {
1043 .c = {69, 70, 68, 71, 32, 35, 33, 34},
1044 .e = {20, 23, 22, 21, 27, 24, 25, 26, 1, 0, 3, 2}
1045 },
1046 [LFm] = {
1047 .c = {32, 35, 34, 33, 70, 69, 68, 71},
1048 .e = {24, 27, 26, 25, 20, 23, 22, 21, 16, 19, 18, 17}
1049 },
1050 [LDm] = {
1051 .c = {70, 69, 71, 68, 35, 32, 34, 33},
1052 .e = {23, 20, 21, 22, 24, 27, 26, 25, 3, 2, 1, 0}
1053 },
1054 [LBm] = {
1055 .c = {35, 32, 33, 34, 69, 70, 71, 68},
1056 .e = {27, 24, 25, 26, 23, 20, 21, 22, 18, 17, 16, 19}
1057 },
1058 [FUm] = {
1059 .c = {64, 66, 65, 67, 36, 38, 37, 39},
1060 .e = {16, 19, 18, 17, 8, 9, 10, 11, 4, 5, 6, 7}
1061 },
1062 [FRm] = {
1063 .c = {36, 38, 39, 37, 66, 64, 65, 67},
1064 .e = {9, 8, 11, 10, 16, 19, 18, 17, 21, 22, 23, 20}
1065 },
1066 [FDm] = {
1067 .c = {66, 64, 67, 65, 38, 36, 39, 37},
1068 .e = {19, 16, 17, 18, 9, 8, 11, 10, 6, 7, 4, 5}
1069 },
1070 [FLm] = {
1071 .c = {38, 36, 37, 39, 64, 66, 67, 65},
1072 .e = {8, 9, 10, 11, 19, 16, 17, 18, 23, 20, 21, 22}
1073 },
1074 [BUm] = {
1075 .c = {65, 67, 64, 66, 37, 39, 36, 38},
1076 .e = {17, 18, 19, 16, 10, 11, 8, 9, 5, 4, 7, 6}
1077 },
1078 [BRm] = {
1079 .c = {39, 37, 36, 38, 65, 67, 66, 64},
1080 .e = {10, 11, 8, 9, 18, 17, 16, 19, 22, 21, 20, 23}
1081 },
1082 [BDm] = {
1083 .c = {67, 65, 66, 64, 39, 37, 38, 36},
1084 .e = {18, 17, 16, 19, 11, 10, 9, 8, 7, 6, 5, 4}
1085 },
1086 [BLm] = {
1087 .c = {37, 39, 38, 36, 67, 65, 64, 66},
1088 .e = {11, 10, 9, 8, 17, 18, 19, 16, 20, 23, 22, 21}
1089 },
1090 };
1091 970
1092 cube_t ret; 971 cube_t ret;
1093 972
@@ -1104,8 +983,7 @@ transform(cube_t c, trans_t t)
1104 983
1105 ret = compose(solvedcube, trans_move_cube[t]); 984 ret = compose(solvedcube, trans_move_cube[t]);
1106 ret = compose(ret, c); 985 ret = compose(ret, c);
1107 /* TODO: pre-compute inverse for performance */ 986 ret = compose(ret, trans_move_cube_inverse[t]);
1108 ret = compose(ret, inverse(trans_move_cube[t]));
1109 987
1110 /* TODO: work out a better way to do this */ 988 /* TODO: work out a better way to do this */
1111 if (t >= 24) 989 if (t >= 24)
diff --git a/src/cube.h b/src/cube.h
index 1e11432..363cad4 100644
--- a/src/cube.h
+++ b/src/cube.h
@@ -10,6 +10,8 @@ typedef struct {
10typedef uint8_t move_t; 10typedef uint8_t move_t;
11typedef uint8_t trans_t; 11typedef uint8_t trans_t;
12 12
13extern move_t inverse_move[];
14extern trans_t inverse_trans[];
13extern cube_t solvedcube; 15extern cube_t solvedcube;
14 16
15/* Functions *****************************************************************/ 17/* Functions *****************************************************************/
diff --git a/src/trans_move_arr.h b/src/trans_move_arr.h
new file mode 100644
index 0000000..a00105f
--- /dev/null
+++ b/src/trans_move_arr.h
@@ -0,0 +1,389 @@
1static cube_t trans_move_cube[] = {
2 [UFr] = {
3 .c = {0, 1, 2, 3, 4, 5, 6, 7},
4 .e = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
5 },
6 [ULr] = {
7 .c = {4, 5, 7, 6, 1, 0, 2, 3},
8 .e = {5, 4, 7, 6, 0, 1, 2, 3, 25, 26, 27, 24}
9 },
10 [UBr] = {
11 .c = {1, 0, 3, 2, 5, 4, 7, 6},
12 .e = {1, 0, 3, 2, 5, 4, 7, 6, 10, 11, 8, 9}
13 },
14 [URr] = {
15 .c = {5, 4, 6, 7, 0, 1, 3, 2},
16 .e = {4, 5, 6, 7, 1, 0, 3, 2, 27, 24, 25, 26}
17 },
18 [DFr] = {
19 .c = {2, 3, 0, 1, 6, 7, 4, 5},
20 .e = {3, 2, 1, 0, 6, 7, 4, 5, 9, 8, 11, 10}
21 },
22 [DLr] = {
23 .c = {7, 6, 4, 5, 2, 3, 1, 0},
24 .e = {6, 7, 4, 5, 2, 3, 0, 1, 26, 25, 24, 27}
25 },
26 [DBr] = {
27 .c = {3, 2, 1, 0, 7, 6, 5, 4},
28 .e = {2, 3, 0, 1, 7, 6, 5, 4, 11, 10, 9, 8}
29 },
30 [DRr] = {
31 .c = {6, 7, 5, 4, 3, 2, 0, 1},
32 .e = {7, 6, 5, 4, 3, 2, 1, 0, 24, 27, 26, 25}
33 },
34 [RUr] = {
35 .c = {64, 67, 65, 66, 37, 38, 36, 39},
36 .e = {20, 23, 22, 21, 24, 27, 26, 25, 0, 1, 2, 3}
37 },
38 [RFr] = {
39 .c = {38, 37, 36, 39, 64, 67, 66, 65},
40 .e = {24, 27, 26, 25, 23, 20, 21, 22, 19, 16, 17, 18}
41 },
42 [RDr] = {
43 .c = {67, 64, 66, 65, 38, 37, 39, 36},
44 .e = {23, 20, 21, 22, 27, 24, 25, 26, 2, 3, 0, 1}
45 },
46 [RBr] = {
47 .c = {37, 38, 39, 36, 67, 64, 65, 66},
48 .e = {27, 24, 25, 26, 20, 23, 22, 21, 17, 18, 19, 16}
49 },
50 [LUr] = {
51 .c = {65, 66, 64, 67, 36, 39, 37, 38},
52 .e = {21, 22, 23, 20, 26, 25, 24, 27, 1, 0, 3, 2}
53 },
54 [LFr] = {
55 .c = {36, 39, 38, 37, 66, 65, 64, 67},
56 .e = {25, 26, 27, 24, 21, 22, 23, 20, 16, 19, 18, 17}
57 },
58 [LDr] = {
59 .c = {66, 65, 67, 64, 39, 36, 38, 37},
60 .e = {22, 21, 20, 23, 25, 26, 27, 24, 3, 2, 1, 0}
61 },
62 [LBr] = {
63 .c = {39, 36, 37, 38, 65, 66, 67, 64},
64 .e = {26, 25, 24, 27, 22, 21, 20, 23, 18, 17, 16, 19}
65 },
66 [FUr] = {
67 .c = {68, 70, 69, 71, 32, 34, 33, 35},
68 .e = {16, 19, 18, 17, 9, 8, 11, 10, 5, 4, 7, 6}
69 },
70 [FRr] = {
71 .c = {32, 34, 35, 33, 70, 68, 69, 71},
72 .e = {8, 9, 10, 11, 16, 19, 18, 17, 20, 23, 22, 21}
73 },
74 [FDr] = {
75 .c = {70, 68, 71, 69, 34, 32, 35, 33},
76 .e = {19, 16, 17, 18, 8, 9, 10, 11, 7, 6, 5, 4}
77 },
78 [FLr] = {
79 .c = {34, 32, 33, 35, 68, 70, 71, 69},
80 .e = {9, 8, 11, 10, 19, 16, 17, 18, 22, 21, 20, 23}
81 },
82 [BUr] = {
83 .c = {69, 71, 68, 70, 33, 35, 32, 34},
84 .e = {17, 18, 19, 16, 11, 10, 9, 8, 4, 5, 6, 7}
85 },
86 [BRr] = {
87 .c = {35, 33, 32, 34, 69, 71, 70, 68},
88 .e = {11, 10, 9, 8, 18, 17, 16, 19, 23, 20, 21, 22}
89 },
90 [BDr] = {
91 .c = {71, 69, 70, 68, 35, 33, 34, 32},
92 .e = {18, 17, 16, 19, 10, 11, 8, 9, 6, 7, 4, 5}
93 },
94 [BLr] = {
95 .c = {33, 35, 34, 32, 71, 69, 68, 70},
96 .e = {10, 11, 8, 9, 17, 18, 19, 16, 21, 22, 23, 20}
97 },
98 [UFm] = {
99 .c = {4, 5, 6, 7, 0, 1, 2, 3},
100 .e = {0, 1, 2, 3, 5, 4, 7, 6, 9, 8, 11, 10}
101 },
102 [ULm] = {
103 .c = {0, 1, 3, 2, 5, 4, 6, 7},
104 .e = {4, 5, 6, 7, 0, 1, 2, 3, 24, 27, 26, 25}
105 },
106 [UBm] = {
107 .c = {5, 4, 7, 6, 1, 0, 3, 2},
108 .e = {1, 0, 3, 2, 4, 5, 6, 7, 11, 10, 9, 8}
109 },
110 [URm] = {
111 .c = {1, 0, 2, 3, 4, 5, 7, 6},
112 .e = {5, 4, 7, 6, 1, 0, 3, 2, 26, 25, 24, 27}
113 },
114 [DFm] = {
115 .c = {6, 7, 4, 5, 2, 3, 0, 1},
116 .e = {3, 2, 1, 0, 7, 6, 5, 4, 8, 9, 10, 11}
117 },
118 [DLm] = {
119 .c = {3, 2, 0, 1, 6, 7, 5, 4},
120 .e = {7, 6, 5, 4, 2, 3, 0, 1, 27, 24, 25, 26}
121 },
122 [DBm] = {
123 .c = {7, 6, 5, 4, 3, 2, 1, 0},
124 .e = {2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9}
125 },
126 [DRm] = {
127 .c = {2, 3, 1, 0, 7, 6, 4, 5},
128 .e = {6, 7, 4, 5, 3, 2, 1, 0, 25, 26, 27, 24}
129 },
130 [RUm] = {
131 .c = {68, 71, 69, 70, 33, 34, 32, 35},
132 .e = {21, 22, 23, 20, 25, 26, 27, 24, 0, 1, 2, 3}
133 },
134 [RFm] = {
135 .c = {34, 33, 32, 35, 68, 71, 70, 69},
136 .e = {25, 26, 27, 24, 22, 21, 20, 23, 19, 16, 17, 18}
137 },
138 [RDm] = {
139 .c = {71, 68, 70, 69, 34, 33, 35, 32},
140 .e = {22, 21, 20, 23, 26, 25, 24, 27, 2, 3, 0, 1}
141 },
142 [RBm] = {
143 .c = {33, 34, 35, 32, 71, 68, 69, 70},
144 .e = {26, 25, 24, 27, 21, 22, 23, 20, 17, 18, 19, 16}
145 },
146 [LUm] = {
147 .c = {69, 70, 68, 71, 32, 35, 33, 34},
148 .e = {20, 23, 22, 21, 27, 24, 25, 26, 1, 0, 3, 2}
149 },
150 [LFm] = {
151 .c = {32, 35, 34, 33, 70, 69, 68, 71},
152 .e = {24, 27, 26, 25, 20, 23, 22, 21, 16, 19, 18, 17}
153 },
154 [LDm] = {
155 .c = {70, 69, 71, 68, 35, 32, 34, 33},
156 .e = {23, 20, 21, 22, 24, 27, 26, 25, 3, 2, 1, 0}
157 },
158 [LBm] = {
159 .c = {35, 32, 33, 34, 69, 70, 71, 68},
160 .e = {27, 24, 25, 26, 23, 20, 21, 22, 18, 17, 16, 19}
161 },
162 [FUm] = {
163 .c = {64, 66, 65, 67, 36, 38, 37, 39},
164 .e = {16, 19, 18, 17, 8, 9, 10, 11, 4, 5, 6, 7}
165 },
166 [FRm] = {
167 .c = {36, 38, 39, 37, 66, 64, 65, 67},
168 .e = {9, 8, 11, 10, 16, 19, 18, 17, 21, 22, 23, 20}
169 },
170 [FDm] = {
171 .c = {66, 64, 67, 65, 38, 36, 39, 37},
172 .e = {19, 16, 17, 18, 9, 8, 11, 10, 6, 7, 4, 5}
173 },
174 [FLm] = {
175 .c = {38, 36, 37, 39, 64, 66, 67, 65},
176 .e = {8, 9, 10, 11, 19, 16, 17, 18, 23, 20, 21, 22}
177 },
178 [BUm] = {
179 .c = {65, 67, 64, 66, 37, 39, 36, 38},
180 .e = {17, 18, 19, 16, 10, 11, 8, 9, 5, 4, 7, 6}
181 },
182 [BRm] = {
183 .c = {39, 37, 36, 38, 65, 67, 66, 64},
184 .e = {10, 11, 8, 9, 18, 17, 16, 19, 22, 21, 20, 23}
185 },
186 [BDm] = {
187 .c = {67, 65, 66, 64, 39, 37, 38, 36},
188 .e = {18, 17, 16, 19, 11, 10, 9, 8, 7, 6, 5, 4}
189 },
190 [BLm] = {
191 .c = {37, 39, 38, 36, 67, 65, 64, 66},
192 .e = {11, 10, 9, 8, 17, 18, 19, 16, 20, 23, 22, 21}
193 },
194};
195
196static cube_t trans_move_cube_inverse[] = {
197 [UFr] = {
198 .c = {0, 1, 2, 3, 4, 5, 6, 7},
199 .e = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
200 },
201 [ULr] = {
202 .c = {5, 4, 6, 7, 0, 1, 3, 2},
203 .e = {4, 5, 6, 7, 1, 0, 3, 2, 27, 24, 25, 26}
204 },
205 [UBr] = {
206 .c = {1, 0, 3, 2, 5, 4, 7, 6},
207 .e = {1, 0, 3, 2, 5, 4, 7, 6, 10, 11, 8, 9}
208 },
209 [URr] = {
210 .c = {4, 5, 7, 6, 1, 0, 2, 3},
211 .e = {5, 4, 7, 6, 0, 1, 2, 3, 25, 26, 27, 24}
212 },
213 [DFr] = {
214 .c = {2, 3, 0, 1, 6, 7, 4, 5},
215 .e = {3, 2, 1, 0, 6, 7, 4, 5, 9, 8, 11, 10}
216 },
217 [DLr] = {
218 .c = {7, 6, 4, 5, 2, 3, 1, 0},
219 .e = {6, 7, 4, 5, 2, 3, 0, 1, 26, 25, 24, 27}
220 },
221 [DBr] = {
222 .c = {3, 2, 1, 0, 7, 6, 5, 4},
223 .e = {2, 3, 0, 1, 7, 6, 5, 4, 11, 10, 9, 8}
224 },
225 [DRr] = {
226 .c = {6, 7, 5, 4, 3, 2, 0, 1},
227 .e = {7, 6, 5, 4, 3, 2, 1, 0, 24, 27, 26, 25}
228 },
229 [RUr] = {
230 .c = {32, 34, 35, 33, 70, 68, 69, 71},
231 .e = {8, 9, 10, 11, 16, 19, 18, 17, 20, 23, 22, 21}
232 },
233 [RFr] = {
234 .c = {36, 39, 38, 37, 66, 65, 64, 67},
235 .e = {25, 26, 27, 24, 21, 22, 23, 20, 16, 19, 18, 17}
236 },
237 [RDr] = {
238 .c = {33, 35, 34, 32, 71, 69, 68, 70},
239 .e = {10, 11, 8, 9, 17, 18, 19, 16, 21, 22, 23, 20}
240 },
241 [RBr] = {
242 .c = {37, 38, 39, 36, 67, 64, 65, 66},
243 .e = {27, 24, 25, 26, 20, 23, 22, 21, 17, 18, 19, 16}
244 },
245 [LUr] = {
246 .c = {34, 32, 33, 35, 68, 70, 71, 69},
247 .e = {9, 8, 11, 10, 19, 16, 17, 18, 22, 21, 20, 23}
248 },
249 [LFr] = {
250 .c = {38, 37, 36, 39, 64, 67, 66, 65},
251 .e = {24, 27, 26, 25, 23, 20, 21, 22, 19, 16, 17, 18}
252 },
253 [LDr] = {
254 .c = {35, 33, 32, 34, 69, 71, 70, 68},
255 .e = {11, 10, 9, 8, 18, 17, 16, 19, 23, 20, 21, 22}
256 },
257 [LBr] = {
258 .c = {39, 36, 37, 38, 65, 66, 67, 64},
259 .e = {26, 25, 24, 27, 22, 21, 20, 23, 18, 17, 16, 19}
260 },
261 [FUr] = {
262 .c = {68, 70, 69, 71, 32, 34, 33, 35},
263 .e = {16, 19, 18, 17, 9, 8, 11, 10, 5, 4, 7, 6}
264 },
265 [FRr] = {
266 .c = {64, 67, 65, 66, 37, 38, 36, 39},
267 .e = {20, 23, 22, 21, 24, 27, 26, 25, 0, 1, 2, 3}
268 },
269 [FDr] = {
270 .c = {69, 71, 68, 70, 33, 35, 32, 34},
271 .e = {17, 18, 19, 16, 11, 10, 9, 8, 4, 5, 6, 7}
272 },
273 [FLr] = {
274 .c = {65, 66, 64, 67, 36, 39, 37, 38},
275 .e = {21, 22, 23, 20, 26, 25, 24, 27, 1, 0, 3, 2}
276 },
277 [BUr] = {
278 .c = {70, 68, 71, 69, 34, 32, 35, 33},
279 .e = {19, 16, 17, 18, 8, 9, 10, 11, 7, 6, 5, 4}
280 },
281 [BRr] = {
282 .c = {66, 65, 67, 64, 39, 36, 38, 37},
283 .e = {22, 21, 20, 23, 25, 26, 27, 24, 3, 2, 1, 0}
284 },
285 [BDr] = {
286 .c = {71, 69, 70, 68, 35, 33, 34, 32},
287 .e = {18, 17, 16, 19, 10, 11, 8, 9, 6, 7, 4, 5}
288 },
289 [BLr] = {
290 .c = {67, 64, 66, 65, 38, 37, 39, 36},
291 .e = {23, 20, 21, 22, 27, 24, 25, 26, 2, 3, 0, 1}
292 },
293 [UFm] = {
294 .c = {4, 5, 6, 7, 0, 1, 2, 3},
295 .e = {0, 1, 2, 3, 5, 4, 7, 6, 9, 8, 11, 10}
296 },
297 [ULm] = {
298 .c = {0, 1, 3, 2, 5, 4, 6, 7},
299 .e = {4, 5, 6, 7, 0, 1, 2, 3, 24, 27, 26, 25}
300 },
301 [UBm] = {
302 .c = {5, 4, 7, 6, 1, 0, 3, 2},
303 .e = {1, 0, 3, 2, 4, 5, 6, 7, 11, 10, 9, 8}
304 },
305 [URm] = {
306 .c = {1, 0, 2, 3, 4, 5, 7, 6},
307 .e = {5, 4, 7, 6, 1, 0, 3, 2, 26, 25, 24, 27}
308 },
309 [DFm] = {
310 .c = {6, 7, 4, 5, 2, 3, 0, 1},
311 .e = {3, 2, 1, 0, 7, 6, 5, 4, 8, 9, 10, 11}
312 },
313 [DLm] = {
314 .c = {2, 3, 1, 0, 7, 6, 4, 5},
315 .e = {6, 7, 4, 5, 3, 2, 1, 0, 25, 26, 27, 24}
316 },
317 [DBm] = {
318 .c = {7, 6, 5, 4, 3, 2, 1, 0},
319 .e = {2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9}
320 },
321 [DRm] = {
322 .c = {3, 2, 0, 1, 6, 7, 5, 4},
323 .e = {7, 6, 5, 4, 2, 3, 0, 1, 27, 24, 25, 26}
324 },
325 [RUm] = {
326 .c = {70, 68, 69, 71, 32, 34, 35, 33},
327 .e = {8, 9, 10, 11, 19, 16, 17, 18, 23, 20, 21, 22}
328 },
329 [RFm] = {
330 .c = {66, 65, 64, 67, 36, 39, 38, 37},
331 .e = {25, 26, 27, 24, 22, 21, 20, 23, 19, 16, 17, 18}
332 },
333 [RDm] = {
334 .c = {71, 69, 68, 70, 33, 35, 34, 32},
335 .e = {10, 11, 8, 9, 18, 17, 16, 19, 22, 21, 20, 23}
336 },
337 [RBm] = {
338 .c = {67, 64, 65, 66, 37, 38, 39, 36},
339 .e = {27, 24, 25, 26, 23, 20, 21, 22, 18, 17, 16, 19}
340 },
341 [LUm] = {
342 .c = {68, 70, 71, 69, 34, 32, 33, 35},
343 .e = {9, 8, 11, 10, 16, 19, 18, 17, 21, 22, 23, 20}
344 },
345 [LFm] = {
346 .c = {64, 67, 66, 65, 38, 37, 36, 39},
347 .e = {24, 27, 26, 25, 20, 23, 22, 21, 16, 19, 18, 17}
348 },
349 [LDm] = {
350 .c = {69, 71, 70, 68, 35, 33, 32, 34},
351 .e = {11, 10, 9, 8, 17, 18, 19, 16, 20, 23, 22, 21}
352 },
353 [LBm] = {
354 .c = {65, 66, 67, 64, 39, 36, 37, 38},
355 .e = {26, 25, 24, 27, 21, 22, 23, 20, 17, 18, 19, 16}
356 },
357 [FUm] = {
358 .c = {32, 34, 33, 35, 68, 70, 69, 71},
359 .e = {16, 19, 18, 17, 8, 9, 10, 11, 4, 5, 6, 7}
360 },
361 [FRm] = {
362 .c = {37, 38, 36, 39, 64, 67, 65, 66},
363 .e = {20, 23, 22, 21, 27, 24, 25, 26, 1, 0, 3, 2}
364 },
365 [FDm] = {
366 .c = {33, 35, 32, 34, 69, 71, 68, 70},
367 .e = {17, 18, 19, 16, 10, 11, 8, 9, 5, 4, 7, 6}
368 },
369 [FLm] = {
370 .c = {36, 39, 37, 38, 65, 66, 64, 67},
371 .e = {21, 22, 23, 20, 25, 26, 27, 24, 0, 1, 2, 3}
372 },
373 [BUm] = {
374 .c = {34, 32, 35, 33, 70, 68, 71, 69},
375 .e = {19, 16, 17, 18, 9, 8, 11, 10, 6, 7, 4, 5}
376 },
377 [BRm] = {
378 .c = {39, 36, 38, 37, 66, 65, 67, 64},
379 .e = {22, 21, 20, 23, 26, 25, 24, 27, 2, 3, 0, 1}
380 },
381 [BDm] = {
382 .c = {35, 33, 34, 32, 71, 69, 70, 68},
383 .e = {18, 17, 16, 19, 11, 10, 9, 8, 7, 6, 5, 4}
384 },
385 [BLm] = {
386 .c = {38, 37, 39, 36, 67, 64, 66, 65},
387 .e = {23, 20, 21, 22, 24, 27, 26, 25, 3, 2, 1, 0}
388 },
389};

Generated with cgit - Back to sebastiano.tronto.net