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