diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2024-04-13 15:48:19 +0200 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2024-04-13 15:48:19 +0200 |
| commit | 3ab2f98170908277f70191846e84e5dde185a056 (patch) | |
| tree | 4c243866a0c004bc061e56975b48367d0ac276b6 /constants.h | |
| parent | a18d4b0ba97b301193597a963a77a40ef7c2254b (diff) | |
| download | cubecore-3ab2f98170908277f70191846e84e5dde185a056.tar.gz cubecore-3ab2f98170908277f70191846e84e5dde185a056.zip | |
removed fast
Diffstat (limited to 'constants.h')
| -rw-r--r-- | constants.h | 786 |
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 | |||
| 48 | typedef 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 | |||
| 54 | typedef 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 | |||
| 737 | static 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 | }; | ||
