| 146 | } |
| 147 | |
| 148 | void move(int i) { |
| 149 | parity ^= pmove[i]; |
| 150 | switch (i) { |
| 151 | case 0: //U |
| 152 | case 1: //U2 |
| 153 | case 2: //U' |
| 154 | swap(ud, 0, 1, 2, 3, i%3); |
| 155 | break; |
| 156 | case 3: //R2 |
| 157 | swap(rl, 0, 1, 2, 3, 1); |
| 158 | break; |
| 159 | case 4: //F |
| 160 | case 5: //F2 |
| 161 | case 6: //F' |
| 162 | swap(fb, 0, 1, 2, 3, (i-1)%3); |
| 163 | break; |
| 164 | case 7: //D |
| 165 | case 8: //D2 |
| 166 | case 9: //D' |
| 167 | swap(ud, 4, 5, 6, 7, (i-1)%3); |
| 168 | break; |
| 169 | case 10: //L2 |
| 170 | swap(rl, 4, 5, 6, 7, 1); |
| 171 | break; |
| 172 | case 11: //B |
| 173 | case 12: //B2 |
| 174 | case 13: //B' |
| 175 | swap(fb, 4, 5, 6, 7, (i+1)%3); |
| 176 | break; |
| 177 | case 14: //u2 |
| 178 | swap(ud, 0, 1, 2, 3, 1); |
| 179 | swap(rl, 0, 5, 4, 1, 1); |
| 180 | swap(fb, 0, 5, 4, 1, 1); |
| 181 | break; |
| 182 | case 15: //r2 |
| 183 | swap(rl, 0, 1, 2, 3, 1); |
| 184 | swap(fb, 1, 4, 7, 2, 1); |
| 185 | swap(ud, 1, 6, 5, 2, 1); |
| 186 | break; |
| 187 | case 16: //f2 |
| 188 | swap(fb, 0, 1, 2, 3, 1); |
| 189 | swap(ud, 3, 2, 5, 4, 1); |
| 190 | swap(rl, 0, 3, 6, 5, 1); |
| 191 | break; |
| 192 | case 17: //d2 |
| 193 | swap(ud, 4, 5, 6, 7, 1); |
| 194 | swap(rl, 3, 2, 7, 6, 1); |
| 195 | swap(fb, 3, 2, 7, 6, 1); |
| 196 | break; |
| 197 | case 18: //l2 |
| 198 | swap(rl, 4, 5, 6, 7, 1); |
| 199 | swap(fb, 0, 3, 6, 5, 1); |
| 200 | swap(ud, 0, 3, 4, 7, 1); |
| 201 | break; |
| 202 | case 19: //b2 |
| 203 | swap(fb, 4, 5, 6, 7, 1); |
| 204 | swap(ud, 0, 7, 6, 1, 1); |
| 205 | swap(rl, 1, 4, 7, 2, 1); |