aboutsummaryrefslogtreecommitdiff
path: root/constants.h
diff options
context:
space:
mode:
Diffstat (limited to 'constants.h')
-rw-r--r--constants.h786
1 files changed, 786 insertions, 0 deletions
diff --git a/constants.h b/constants.h
new file mode 100644
index 0000000..c3b9312
--- /dev/null
+++ b/constants.h
@@ -0,0 +1,786 @@
1#define NORMAL 0
2#define INVERSE 1
3
4#define _2p11 2048U
5#define _2p12 4096U
6#define _3p7 2187U
7#define _3p8 6561U
8#define _12c4 495U
9#define _8c4 70U
10
11#define _c_ufr 0U
12#define _c_ubl 1U
13#define _c_dfl 2U
14#define _c_dbr 3U
15#define _c_ufl 4U
16#define _c_ubr 5U
17#define _c_dfr 6U
18#define _c_dbl 7U
19
20#define _e_uf 0U
21#define _e_ub 1U
22#define _e_db 2U
23#define _e_df 3U
24#define _e_ur 4U
25#define _e_ul 5U
26#define _e_dl 6U
27#define _e_dr 7U
28#define _e_fr 8U
29#define _e_fl 9U
30#define _e_bl 10U
31#define _e_br 11U
32
33#define _eoshift 4U
34#define _coshift 5U
35
36#define _pbits 0xFU
37#define _esepbit1 0x4U
38#define _esepbit2 0x8U
39#define _csepbit 0x4U
40#define _eobit 0x10U
41#define _cobits 0xF0U
42#define _cobits2 0x60U
43#define _ctwist_cw 0x20U
44#define _ctwist_ccw 0x40U
45#define _eflip 0x10U
46#define _error 0xFFU
47
48typedef enum {
49 U, U2, U3, D, D2, D3,
50 R, R2, R3, L, L2, L3,
51 F, F2, F3, B, B2, B3
52} move_t;
53
54typedef enum {
55 UFr, ULr, UBr, URr, DFr, DLr, DBr, DRr,
56 RUr, RFr, RDr, RBr, LUr, LFr, LDr, LBr,
57 FUr, FRr, FDr, FLr, BUr, BRr, BDr, BLr,
58
59 UFm, ULm, UBm, URm, DFm, DLm, DBm, DRm,
60 RUm, RFm, RDm, RBm, LUm, LFm, LDm, LBm,
61 FUm, FRm, FDm, FLm, BUm, BRm, BDm, BLm
62} trans_t;
63
64_static cube_t zero = { .corner = {0}, .edge = {0} };
65_static cube_t solved = {
66 .corner = {0, 1, 2, 3, 4, 5, 6, 7},
67 .edge = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
68};
69
70_static cube_t move_table[] = {
71 [U] = {
72 .corner = {5, 4, 2, 3, 0, 1, 6, 7},
73 .edge = {4, 5, 2, 3, 1, 0, 6, 7, 8, 9, 10, 11}
74 },
75 [U2] = {
76 .corner = {1, 0, 2, 3, 5, 4, 6, 7},
77 .edge = {1, 0, 2, 3, 5, 4, 6, 7, 8, 9, 10, 11}
78 },
79 [U3] = {
80 .corner = {4, 5, 2, 3, 1, 0, 6, 7},
81 .edge = {5, 4, 2, 3, 0, 1, 6, 7, 8, 9, 10, 11}
82 },
83 [D] = {
84 .corner = {0, 1, 7, 6, 4, 5, 2, 3},
85 .edge = {0, 1, 7, 6, 4, 5, 2, 3, 8, 9, 10, 11}
86 },
87 [D2] = {
88 .corner = {0, 1, 3, 2, 4, 5, 7, 6},
89 .edge = {0, 1, 3, 2, 4, 5, 7, 6, 8, 9, 10, 11}
90 },
91 [D3] = {
92 .corner = {0, 1, 6, 7, 4, 5, 3, 2},
93 .edge = {0, 1, 6, 7, 4, 5, 3, 2, 8, 9, 10, 11}
94 },
95 [R] = {
96 .corner = {70, 1, 2, 69, 4, 32, 35, 7},
97 .edge = {0, 1, 2, 3, 8, 5, 6, 11, 7, 9, 10, 4}
98 },
99 [R2] = {
100 .corner = {3, 1, 2, 0, 4, 6, 5, 7},
101 .edge = {0, 1, 2, 3, 7, 5, 6, 4, 11, 9, 10, 8}
102 },
103 [R3] = {
104 .corner = {69, 1, 2, 70, 4, 35, 32, 7},
105 .edge = {0, 1, 2, 3, 11, 5, 6, 8, 4, 9, 10, 7}
106 },
107 [L] = {
108 .corner = {0, 71, 68, 3, 33, 5, 6, 34},
109 .edge = {0, 1, 2, 3, 4, 10, 9, 7, 8, 5, 6, 11}
110 },
111 [L2] = {
112 .corner = {0, 2, 1, 3, 7, 5, 6, 4},
113 .edge = {0, 1, 2, 3, 4, 6, 5, 7, 8, 10, 9, 11}
114 },
115 [L3] = {
116 .corner = {0, 68, 71, 3, 34, 5, 6, 33},
117 .edge = {0, 1, 2, 3, 4, 9, 10, 7, 8, 6, 5, 11}
118 },
119 [F] = {
120 .corner = {36, 1, 38, 3, 66, 5, 64, 7},
121 .edge = {25, 1, 2, 24, 4, 5, 6, 7, 16, 19, 10, 11}
122 },
123 [F2] = {
124 .corner = {2, 1, 0, 3, 6, 5, 4, 7},
125 .edge = {3, 1, 2, 0, 4, 5, 6, 7, 9, 8, 10, 11}
126 },
127 [F3] = {
128 .corner = {38, 1, 36, 3, 64, 5, 66, 7},
129 .edge = {24, 1, 2, 25, 4, 5, 6, 7, 19, 16, 10, 11}
130 },
131 [B] = {
132 .corner = {0, 37, 2, 39, 4, 67, 6, 65},
133 .edge = {0, 27, 26, 3, 4, 5, 6, 7, 8, 9, 17, 18}
134 },
135 [B2] = {
136 .corner = {0, 3, 2, 1, 4, 7, 6, 5},
137 .edge = {0, 2, 1, 3, 4, 5, 6, 7, 8, 9, 11, 10}
138 },
139 [B3] = {
140 .corner = {0, 39, 2, 37, 4, 65, 6, 67},
141 .edge = {0, 26, 27, 3, 4, 5, 6, 7, 8, 9, 18, 17}
142 },
143};
144
145_static cube_t trans_table[][2] = {
146 [UFr] = {
147 [NORMAL] = {
148 .corner = {0, 1, 2, 3, 4, 5, 6, 7},
149 .edge = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
150 },
151 [INVERSE] = {
152 .corner = {0, 1, 2, 3, 4, 5, 6, 7},
153 .edge = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
154 }
155 },
156 [ULr] = {
157 [NORMAL] = {
158 .corner = {4, 5, 7, 6, 1, 0, 2, 3},
159 .edge = {5, 4, 7, 6, 0, 1, 2, 3, 25, 26, 27, 24}
160 },
161 [INVERSE] = {
162 .corner = {5, 4, 6, 7, 0, 1, 3, 2},
163 .edge = {4, 5, 6, 7, 1, 0, 3, 2, 27, 24, 25, 26}
164 }
165 },
166 [UBr] = {
167 [NORMAL] = {
168 .corner = {1, 0, 3, 2, 5, 4, 7, 6},
169 .edge = {1, 0, 3, 2, 5, 4, 7, 6, 10, 11, 8, 9}
170 },
171 [INVERSE] = {
172 .corner = {1, 0, 3, 2, 5, 4, 7, 6},
173 .edge = {1, 0, 3, 2, 5, 4, 7, 6, 10, 11, 8, 9}
174 }
175 },
176 [URr] = {
177 [NORMAL] = {
178 .corner = {5, 4, 6, 7, 0, 1, 3, 2},
179 .edge = {4, 5, 6, 7, 1, 0, 3, 2, 27, 24, 25, 26}
180 },
181 [INVERSE] = {
182 .corner = {4, 5, 7, 6, 1, 0, 2, 3},
183 .edge = {5, 4, 7, 6, 0, 1, 2, 3, 25, 26, 27, 24}
184 }
185 },
186 [DFr] = {
187 [NORMAL] = {
188 .corner = {2, 3, 0, 1, 6, 7, 4, 5},
189 .edge = {3, 2, 1, 0, 6, 7, 4, 5, 9, 8, 11, 10}
190 },
191 [INVERSE] = {
192 .corner = {2, 3, 0, 1, 6, 7, 4, 5},
193 .edge = {3, 2, 1, 0, 6, 7, 4, 5, 9, 8, 11, 10}
194 }
195 },
196 [DLr] = {
197 [NORMAL] = {
198 .corner = {7, 6, 4, 5, 2, 3, 1, 0},
199 .edge = {6, 7, 4, 5, 2, 3, 0, 1, 26, 25, 24, 27}
200 },
201 [INVERSE] = {
202 .corner = {7, 6, 4, 5, 2, 3, 1, 0},
203 .edge = {6, 7, 4, 5, 2, 3, 0, 1, 26, 25, 24, 27}
204 }
205 },
206 [DBr] = {
207 [NORMAL] = {
208 .corner = {3, 2, 1, 0, 7, 6, 5, 4},
209 .edge = {2, 3, 0, 1, 7, 6, 5, 4, 11, 10, 9, 8}
210 },
211 [INVERSE] = {
212 .corner = {3, 2, 1, 0, 7, 6, 5, 4},
213 .edge = {2, 3, 0, 1, 7, 6, 5, 4, 11, 10, 9, 8}
214 }
215 },
216 [DRr] = {
217 [NORMAL] = {
218 .corner = {6, 7, 5, 4, 3, 2, 0, 1},
219 .edge = {7, 6, 5, 4, 3, 2, 1, 0, 24, 27, 26, 25}
220 },
221 [INVERSE] = {
222 .corner = {6, 7, 5, 4, 3, 2, 0, 1},
223 .edge = {7, 6, 5, 4, 3, 2, 1, 0, 24, 27, 26, 25}
224 }
225 },
226 [RUr] = {
227 [NORMAL] = {
228 .corner = {64, 67, 65, 66, 37, 38, 36, 39},
229 .edge = {20, 23, 22, 21, 24, 27, 26, 25, 0, 1, 2, 3}
230 },
231 [INVERSE] = {
232 .corner = {32, 34, 35, 33, 70, 68, 69, 71},
233 .edge = {8, 9, 10, 11, 16, 19, 18, 17, 20, 23, 22, 21}
234 }
235 },
236 [RFr] = {
237 [NORMAL] = {
238 .corner = {38, 37, 36, 39, 64, 67, 66, 65},
239 .edge = {24, 27, 26, 25, 23, 20, 21, 22, 19, 16, 17, 18}
240 },
241 [INVERSE] = {
242 .corner = {36, 39, 38, 37, 66, 65, 64, 67},
243 .edge = {25, 26, 27, 24, 21, 22, 23, 20, 16, 19, 18, 17}
244 }
245 },
246 [RDr] = {
247 [NORMAL] = {
248 .corner = {67, 64, 66, 65, 38, 37, 39, 36},
249 .edge = {23, 20, 21, 22, 27, 24, 25, 26, 2, 3, 0, 1}
250 },
251 [INVERSE] = {
252 .corner = {33, 35, 34, 32, 71, 69, 68, 70},
253 .edge = {10, 11, 8, 9, 17, 18, 19, 16, 21, 22, 23, 20}
254 }
255 },
256 [RBr] = {
257 [NORMAL] = {
258 .corner = {37, 38, 39, 36, 67, 64, 65, 66},
259 .edge = {27, 24, 25, 26, 20, 23, 22, 21, 17, 18, 19, 16}
260 },
261 [INVERSE] = {
262 .corner = {37, 38, 39, 36, 67, 64, 65, 66},
263 .edge = {27, 24, 25, 26, 20, 23, 22, 21, 17, 18, 19, 16}
264 }
265 },
266 [LUr] = {
267 [NORMAL] = {
268 .corner = {65, 66, 64, 67, 36, 39, 37, 38},
269 .edge = {21, 22, 23, 20, 26, 25, 24, 27, 1, 0, 3, 2}
270 },
271 [INVERSE] = {
272 .corner = {34, 32, 33, 35, 68, 70, 71, 69},
273 .edge = {9, 8, 11, 10, 19, 16, 17, 18, 22, 21, 20, 23}
274 }
275 },
276 [LFr] = {
277 [NORMAL] = {
278 .corner = {36, 39, 38, 37, 66, 65, 64, 67},
279 .edge = {25, 26, 27, 24, 21, 22, 23, 20, 16, 19, 18, 17}
280 },
281 [INVERSE] = {
282 .corner = {38, 37, 36, 39, 64, 67, 66, 65},
283 .edge = {24, 27, 26, 25, 23, 20, 21, 22, 19, 16, 17, 18}
284 }
285 },
286 [LDr] = {
287 [NORMAL] = {
288 .corner = {66, 65, 67, 64, 39, 36, 38, 37},
289 .edge = {22, 21, 20, 23, 25, 26, 27, 24, 3, 2, 1, 0}
290 },
291 [INVERSE] = {
292 .corner = {35, 33, 32, 34, 69, 71, 70, 68},
293 .edge = {11, 10, 9, 8, 18, 17, 16, 19, 23, 20, 21, 22}
294 }
295 },
296 [LBr] = {
297 [NORMAL] = {
298 .corner = {39, 36, 37, 38, 65, 66, 67, 64},
299 .edge = {26, 25, 24, 27, 22, 21, 20, 23, 18, 17, 16, 19}
300 },
301 [INVERSE] = {
302 .corner = {39, 36, 37, 38, 65, 66, 67, 64},
303 .edge = {26, 25, 24, 27, 22, 21, 20, 23, 18, 17, 16, 19}
304 }
305 },
306 [FUr] = {
307 [NORMAL] = {
308 .corner = {68, 70, 69, 71, 32, 34, 33, 35},
309 .edge = {16, 19, 18, 17, 9, 8, 11, 10, 5, 4, 7, 6}
310 },
311 [INVERSE] = {
312 .corner = {68, 70, 69, 71, 32, 34, 33, 35},
313 .edge = {16, 19, 18, 17, 9, 8, 11, 10, 5, 4, 7, 6}
314 }
315 },
316 [FRr] = {
317 [NORMAL] = {
318 .corner = {32, 34, 35, 33, 70, 68, 69, 71},
319 .edge = {8, 9, 10, 11, 16, 19, 18, 17, 20, 23, 22, 21}
320 },
321 [INVERSE] = {
322 .corner = {64, 67, 65, 66, 37, 38, 36, 39},
323 .edge = {20, 23, 22, 21, 24, 27, 26, 25, 0, 1, 2, 3}
324 }
325 },
326 [FDr] = {
327 [NORMAL] = {
328 .corner = {70, 68, 71, 69, 34, 32, 35, 33},
329 .edge = {19, 16, 17, 18, 8, 9, 10, 11, 7, 6, 5, 4}
330 },
331 [INVERSE] = {
332 .corner = {69, 71, 68, 70, 33, 35, 32, 34},
333 .edge = {17, 18, 19, 16, 11, 10, 9, 8, 4, 5, 6, 7}
334 }
335 },
336 [FLr] = {
337 [NORMAL] = {
338 .corner = {34, 32, 33, 35, 68, 70, 71, 69},
339 .edge = {9, 8, 11, 10, 19, 16, 17, 18, 22, 21, 20, 23}
340 },
341 [INVERSE] = {
342 .corner = {65, 66, 64, 67, 36, 39, 37, 38},
343 .edge = {21, 22, 23, 20, 26, 25, 24, 27, 1, 0, 3, 2}
344 }
345 },
346 [BUr] = {
347 [NORMAL] = {
348 .corner = {69, 71, 68, 70, 33, 35, 32, 34},
349 .edge = {17, 18, 19, 16, 11, 10, 9, 8, 4, 5, 6, 7}
350 },
351 [INVERSE] = {
352 .corner = {70, 68, 71, 69, 34, 32, 35, 33},
353 .edge = {19, 16, 17, 18, 8, 9, 10, 11, 7, 6, 5, 4}
354 }
355 },
356 [BRr] = {
357 [NORMAL] = {
358 .corner = {35, 33, 32, 34, 69, 71, 70, 68},
359 .edge = {11, 10, 9, 8, 18, 17, 16, 19, 23, 20, 21, 22}
360 },
361 [INVERSE] = {
362 .corner = {66, 65, 67, 64, 39, 36, 38, 37},
363 .edge = {22, 21, 20, 23, 25, 26, 27, 24, 3, 2, 1, 0}
364 }
365 },
366 [BDr] = {
367 [NORMAL] = {
368 .corner = {71, 69, 70, 68, 35, 33, 34, 32},
369 .edge = {18, 17, 16, 19, 10, 11, 8, 9, 6, 7, 4, 5}
370 },
371 [INVERSE] = {
372 .corner = {71, 69, 70, 68, 35, 33, 34, 32},
373 .edge = {18, 17, 16, 19, 10, 11, 8, 9, 6, 7, 4, 5}
374 }
375 },
376 [BLr] = {
377 [NORMAL] = {
378 .corner = {33, 35, 34, 32, 71, 69, 68, 70},
379 .edge = {10, 11, 8, 9, 17, 18, 19, 16, 21, 22, 23, 20}
380 },
381 [INVERSE] = {
382 .corner = {67, 64, 66, 65, 38, 37, 39, 36},
383 .edge = {23, 20, 21, 22, 27, 24, 25, 26, 2, 3, 0, 1}
384 }
385 },
386 [UFm] = {
387 [NORMAL] = {
388 .corner = {4, 5, 6, 7, 0, 1, 2, 3},
389 .edge = {0, 1, 2, 3, 5, 4, 7, 6, 9, 8, 11, 10}
390 },
391 [INVERSE] = {
392 .corner = {4, 5, 6, 7, 0, 1, 2, 3},
393 .edge = {0, 1, 2, 3, 5, 4, 7, 6, 9, 8, 11, 10}
394 }
395 },
396 [ULm] = {
397 [NORMAL] = {
398 .corner = {0, 1, 3, 2, 5, 4, 6, 7},
399 .edge = {4, 5, 6, 7, 0, 1, 2, 3, 24, 27, 26, 25}
400 },
401 [INVERSE] = {
402 .corner = {0, 1, 3, 2, 5, 4, 6, 7},
403 .edge = {4, 5, 6, 7, 0, 1, 2, 3, 24, 27, 26, 25}
404 }
405 },
406 [UBm] = {
407 [NORMAL] = {
408 .corner = {5, 4, 7, 6, 1, 0, 3, 2},
409 .edge = {1, 0, 3, 2, 4, 5, 6, 7, 11, 10, 9, 8}
410 },
411 [INVERSE] = {
412 .corner = {5, 4, 7, 6, 1, 0, 3, 2},
413 .edge = {1, 0, 3, 2, 4, 5, 6, 7, 11, 10, 9, 8}
414 }
415 },
416 [URm] = {
417 [NORMAL] = {
418 .corner = {1, 0, 2, 3, 4, 5, 7, 6},
419 .edge = {5, 4, 7, 6, 1, 0, 3, 2, 26, 25, 24, 27}
420 },
421 [INVERSE] = {
422 .corner = {1, 0, 2, 3, 4, 5, 7, 6},
423 .edge = {5, 4, 7, 6, 1, 0, 3, 2, 26, 25, 24, 27}
424 }
425 },
426 [DFm] = {
427 [NORMAL] = {
428 .corner = {6, 7, 4, 5, 2, 3, 0, 1},
429 .edge = {3, 2, 1, 0, 7, 6, 5, 4, 8, 9, 10, 11}
430 },
431 [INVERSE] = {
432 .corner = {6, 7, 4, 5, 2, 3, 0, 1},
433 .edge = {3, 2, 1, 0, 7, 6, 5, 4, 8, 9, 10, 11}
434 }
435 },
436 [DLm] = {
437 [NORMAL] = {
438 .corner = {3, 2, 0, 1, 6, 7, 5, 4},
439 .edge = {7, 6, 5, 4, 2, 3, 0, 1, 27, 24, 25, 26}
440 },
441 [INVERSE] = {
442 .corner = {2, 3, 1, 0, 7, 6, 4, 5},
443 .edge = {6, 7, 4, 5, 3, 2, 1, 0, 25, 26, 27, 24}
444 }
445 },
446 [DBm] = {
447 [NORMAL] = {
448 .corner = {7, 6, 5, 4, 3, 2, 1, 0},
449 .edge = {2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9}
450 },
451 [INVERSE] = {
452 .corner = {7, 6, 5, 4, 3, 2, 1, 0},
453 .edge = {2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9}
454 }
455 },
456 [DRm] = {
457 [NORMAL] = {
458 .corner = {2, 3, 1, 0, 7, 6, 4, 5},
459 .edge = {6, 7, 4, 5, 3, 2, 1, 0, 25, 26, 27, 24}
460 },
461 [INVERSE] = {
462 .corner = {3, 2, 0, 1, 6, 7, 5, 4},
463 .edge = {7, 6, 5, 4, 2, 3, 0, 1, 27, 24, 25, 26}
464 }
465 },
466 [RUm] = {
467 [NORMAL] = {
468 .corner = {68, 71, 69, 70, 33, 34, 32, 35},
469 .edge = {21, 22, 23, 20, 25, 26, 27, 24, 0, 1, 2, 3}
470 },
471 [INVERSE] = {
472 .corner = {70, 68, 69, 71, 32, 34, 35, 33},
473 .edge = {8, 9, 10, 11, 19, 16, 17, 18, 23, 20, 21, 22}
474 }
475 },
476 [RFm] = {
477 [NORMAL] = {
478 .corner = {34, 33, 32, 35, 68, 71, 70, 69},
479 .edge = {25, 26, 27, 24, 22, 21, 20, 23, 19, 16, 17, 18}
480 },
481 [INVERSE] = {
482 .corner = {66, 65, 64, 67, 36, 39, 38, 37},
483 .edge = {25, 26, 27, 24, 22, 21, 20, 23, 19, 16, 17, 18}
484 }
485 },
486 [RDm] = {
487 [NORMAL] = {
488 .corner = {71, 68, 70, 69, 34, 33, 35, 32},
489 .edge = {22, 21, 20, 23, 26, 25, 24, 27, 2, 3, 0, 1}
490 },
491 [INVERSE] = {
492 .corner = {71, 69, 68, 70, 33, 35, 34, 32},
493 .edge = {10, 11, 8, 9, 18, 17, 16, 19, 22, 21, 20, 23}
494 }
495 },
496 [RBm] = {
497 [NORMAL] = {
498 .corner = {33, 34, 35, 32, 71, 68, 69, 70},
499 .edge = {26, 25, 24, 27, 21, 22, 23, 20, 17, 18, 19, 16}
500 },
501 [INVERSE] = {
502 .corner = {67, 64, 65, 66, 37, 38, 39, 36},
503 .edge = {27, 24, 25, 26, 23, 20, 21, 22, 18, 17, 16, 19}
504 }
505 },
506 [LUm] = {
507 [NORMAL] = {
508 .corner = {69, 70, 68, 71, 32, 35, 33, 34},
509 .edge = {20, 23, 22, 21, 27, 24, 25, 26, 1, 0, 3, 2}
510 },
511 [INVERSE] = {
512 .corner = {68, 70, 71, 69, 34, 32, 33, 35},
513 .edge = {9, 8, 11, 10, 16, 19, 18, 17, 21, 22, 23, 20}
514 }
515 },
516 [LFm] = {
517 [NORMAL] = {
518 .corner = {32, 35, 34, 33, 70, 69, 68, 71},
519 .edge = {24, 27, 26, 25, 20, 23, 22, 21, 16, 19, 18, 17}
520 },
521 [INVERSE] = {
522 .corner = {64, 67, 66, 65, 38, 37, 36, 39},
523 .edge = {24, 27, 26, 25, 20, 23, 22, 21, 16, 19, 18, 17}
524 }
525 },
526 [LDm] = {
527 [NORMAL] = {
528 .corner = {70, 69, 71, 68, 35, 32, 34, 33},
529 .edge = {23, 20, 21, 22, 24, 27, 26, 25, 3, 2, 1, 0}
530 },
531 [INVERSE] = {
532 .corner = {69, 71, 70, 68, 35, 33, 32, 34},
533 .edge = {11, 10, 9, 8, 17, 18, 19, 16, 20, 23, 22, 21}
534 }
535 },
536 [LBm] = {
537 [NORMAL] = {
538 .corner = {35, 32, 33, 34, 69, 70, 71, 68},
539 .edge = {27, 24, 25, 26, 23, 20, 21, 22, 18, 17, 16, 19}
540 },
541 [INVERSE] = {
542 .corner = {65, 66, 67, 64, 39, 36, 37, 38},
543 .edge = {26, 25, 24, 27, 21, 22, 23, 20, 17, 18, 19, 16}
544 }
545 },
546 [FUm] = {
547 [NORMAL] = {
548 .corner = {64, 66, 65, 67, 36, 38, 37, 39},
549 .edge = {16, 19, 18, 17, 8, 9, 10, 11, 4, 5, 6, 7}
550 },
551 [INVERSE] = {
552 .corner = {32, 34, 33, 35, 68, 70, 69, 71},
553 .edge = {16, 19, 18, 17, 8, 9, 10, 11, 4, 5, 6, 7}
554 }
555 },
556 [FRm] = {
557 [NORMAL] = {
558 .corner = {36, 38, 39, 37, 66, 64, 65, 67},
559 .edge = {9, 8, 11, 10, 16, 19, 18, 17, 21, 22, 23, 20}
560 },
561 [INVERSE] = {
562 .corner = {37, 38, 36, 39, 64, 67, 65, 66},
563 .edge = {20, 23, 22, 21, 27, 24, 25, 26, 1, 0, 3, 2}
564 }
565 },
566 [FDm] = {
567 [NORMAL] = {
568 .corner = {66, 64, 67, 65, 38, 36, 39, 37},
569 .edge = {19, 16, 17, 18, 9, 8, 11, 10, 6, 7, 4, 5}
570 },
571 [INVERSE] = {
572 .corner = {33, 35, 32, 34, 69, 71, 68, 70},
573 .edge = {17, 18, 19, 16, 10, 11, 8, 9, 5, 4, 7, 6}
574 }
575 },
576 [FLm] = {
577 [NORMAL] = {
578 .corner = {38, 36, 37, 39, 64, 66, 67, 65},
579 .edge = {8, 9, 10, 11, 19, 16, 17, 18, 23, 20, 21, 22}
580 },
581 [INVERSE] = {
582 .corner = {36, 39, 37, 38, 65, 66, 64, 67},
583 .edge = {21, 22, 23, 20, 25, 26, 27, 24, 0, 1, 2, 3}
584 }
585 },
586 [BUm] = {
587 [NORMAL] = {
588 .corner = {65, 67, 64, 66, 37, 39, 36, 38},
589 .edge = {17, 18, 19, 16, 10, 11, 8, 9, 5, 4, 7, 6}
590 },
591 [INVERSE] = {
592 .corner = {34, 32, 35, 33, 70, 68, 71, 69},
593 .edge = {19, 16, 17, 18, 9, 8, 11, 10, 6, 7, 4, 5}
594 }
595 },
596 [BRm] = {
597 [NORMAL] = {
598 .corner = {39, 37, 36, 38, 65, 67, 66, 64},
599 .edge = {10, 11, 8, 9, 18, 17, 16, 19, 22, 21, 20, 23}
600 },
601 [INVERSE] = {
602 .corner = {39, 36, 38, 37, 66, 65, 67, 64},
603 .edge = {22, 21, 20, 23, 26, 25, 24, 27, 2, 3, 0, 1}
604 }
605 },
606 [BDm] = {
607 [NORMAL] = {
608 .corner = {67, 65, 66, 64, 39, 37, 38, 36},
609 .edge = {18, 17, 16, 19, 11, 10, 9, 8, 7, 6, 5, 4}
610 },
611 [INVERSE] = {
612 .corner = {35, 33, 34, 32, 71, 69, 70, 68},
613 .edge = {18, 17, 16, 19, 11, 10, 9, 8, 7, 6, 5, 4}
614 }
615 },
616 [BLm] = {
617 [NORMAL] = {
618 .corner = {37, 39, 38, 36, 67, 65, 64, 66},
619 .edge = {11, 10, 9, 8, 17, 18, 19, 16, 20, 23, 22, 21}
620 },
621 [INVERSE] = {
622 .corner = {38, 37, 39, 36, 67, 64, 66, 65},
623 .edge = {23, 20, 21, 22, 24, 27, 26, 25, 3, 2, 1, 0}
624 }
625 },
626};
627
628_static char *cornerstr[] = {
629 [_c_ufr] = "UFR",
630 [_c_ubl] = "UBL",
631 [_c_dfl] = "DFL",
632 [_c_dbr] = "DBR",
633 [_c_ufl] = "UFL",
634 [_c_ubr] = "UBR",
635 [_c_dfr] = "DFR",
636 [_c_dbl] = "DBL"
637};
638
639_static char *cornerstralt[] = {
640 [_c_ufr] = "URF",
641 [_c_ubl] = "ULB",
642 [_c_dfl] = "DLF",
643 [_c_dbr] = "DRB",
644 [_c_ufl] = "ULF",
645 [_c_ubr] = "URB",
646 [_c_dfr] = "DRF",
647 [_c_dbl] = "DLB"
648};
649
650_static char *edgestr[] = {
651 [_e_uf] = "UF",
652 [_e_ub] = "UB",
653 [_e_db] = "DB",
654 [_e_df] = "DF",
655 [_e_ur] = "UR",
656 [_e_ul] = "UL",
657 [_e_dl] = "DL",
658 [_e_dr] = "DR",
659 [_e_fr] = "FR",
660 [_e_fl] = "FL",
661 [_e_bl] = "BL",
662 [_e_br] = "BR"
663};
664
665_static char *movestr[] = {
666 [U] = "U",
667 [U2] = "U2",
668 [U3] = "U'",
669 [D] = "D",
670 [D2] = "D2",
671 [D3] = "D'",
672 [R] = "R",
673 [R2] = "R2",
674 [R3] = "R'",
675 [L] = "L",
676 [L2] = "L2",
677 [L3] = "L'",
678 [F] = "F",
679 [F2] = "F2",
680 [F3] = "F'",
681 [B] = "B",
682 [B2] = "B2",
683 [B3] = "B'",
684};
685
686_static char *transstr[] = {
687 [UFr] = "rotation UF",
688 [UFm] = "mirrored UF",
689 [ULr] = "rotation UL",
690 [ULm] = "mirrored UL",
691 [UBr] = "rotation UB",
692 [UBm] = "mirrored UB",
693 [URr] = "rotation UR",
694 [URm] = "mirrored UR",
695 [DFr] = "rotation DF",
696 [DFm] = "mirrored DF",
697 [DLr] = "rotation DL",
698 [DLm] = "mirrored DL",
699 [DBr] = "rotation DB",
700 [DBm] = "mirrored DB",
701 [DRr] = "rotation DR",
702 [DRm] = "mirrored DR",
703 [RUr] = "rotation RU",
704 [RUm] = "mirrored RU",
705 [RFr] = "rotation RF",
706 [RFm] = "mirrored RF",
707 [RDr] = "rotation RD",
708 [RDm] = "mirrored RD",
709 [RBr] = "rotation RB",
710 [RBm] = "mirrored RB",
711 [LUr] = "rotation LU",
712 [LUm] = "mirrored LU",
713 [LFr] = "rotation LF",
714 [LFm] = "mirrored LF",
715 [LDr] = "rotation LD",
716 [LDm] = "mirrored LD",
717 [LBr] = "rotation LB",
718 [LBm] = "mirrored LB",
719 [FUr] = "rotation FU",
720 [FUm] = "mirrored FU",
721 [FRr] = "rotation FR",
722 [FRm] = "mirrored FR",
723 [FDr] = "rotation FD",
724 [FDm] = "mirrored FD",
725 [FLr] = "rotation FL",
726 [FLm] = "mirrored FL",
727 [BUr] = "rotation BU",
728 [BUm] = "mirrored BU",
729 [BRr] = "rotation BR",
730 [BRm] = "mirrored BR",
731 [BDr] = "rotation BD",
732 [BDm] = "mirrored BD",
733 [BLr] = "rotation BL",
734 [BLm] = "mirrored BL",
735};
736
737static uint8_t inverse_trans_table[48] = {
738 [UFr] = UFr,
739 [UFm] = UFm,
740 [ULr] = URr,
741 [ULm] = ULm,
742 [UBr] = UBr,
743 [UBm] = UBm,
744 [URr] = ULr,
745 [URm] = URm,
746 [DFr] = DFr,
747 [DFm] = DFm,
748 [DLr] = DLr,
749 [DLm] = DRm,
750 [DBr] = DBr,
751 [DBm] = DBm,
752 [DRr] = DRr,
753 [DRm] = DLm,
754 [RUr] = FRr,
755 [RUm] = FLm,
756 [RFr] = LFr,
757 [RFm] = RFm,
758 [RDr] = BLr,
759 [RDm] = BRm,
760 [RBr] = RBr,
761 [RBm] = LBm,
762 [LUr] = FLr,
763 [LUm] = FRm,
764 [LFr] = RFr,
765 [LFm] = LFm,
766 [LDr] = BRr,
767 [LDm] = BLm,
768 [LBr] = LBr,
769 [LBm] = RBm,
770 [FUr] = FUr,
771 [FUm] = FUm,
772 [FRr] = RUr,
773 [FRm] = LUm,
774 [FDr] = BUr,
775 [FDm] = BUm,
776 [FLr] = LUr,
777 [FLm] = RUm,
778 [BUr] = FDr,
779 [BUm] = FDm,
780 [BRr] = LDr,
781 [BRm] = RDm,
782 [BDr] = BDr,
783 [BDm] = BDm,
784 [BLr] = RDr,
785 [BLm] = LDm,
786};

Generated with cgit - Back to sebastiano.tronto.net