| 233 | } |
| 234 | |
| 235 | public static void randomEG(int type, String olls) { |
| 236 | reset(); |
| 237 | //整体转动 |
| 238 | //for (int i = 0; i < 3; i++) |
| 239 | doMove(6, r.nextInt(4)); |
| 240 | //交换底层2块 |
| 241 | //doMove(3, r.nextInt(4)); |
| 242 | switch (type) { |
| 243 | case 4: //不交换 |
| 244 | break; |
| 245 | case 2: //交换相邻两块 |
| 246 | swap(4, 6); |
| 247 | break; |
| 248 | case 1: //交换相对两块 |
| 249 | swap(5, 6); |
| 250 | break; |
| 251 | case 6: //不交换或交换相邻块 |
| 252 | if (r.nextInt(2) == 1) |
| 253 | swap(4, 5); |
| 254 | break; |
| 255 | case 5: //不交换或交换相对块 |
| 256 | if (r.nextInt(2) == 1) |
| 257 | swap(5, 6); |
| 258 | break; |
| 259 | case 3: //交换任意两块 |
| 260 | swap(4 + r.nextInt(2), 6); |
| 261 | break; |
| 262 | default: |
| 263 | switch (r.nextInt(3)) { |
| 264 | case 0: |
| 265 | break; |
| 266 | case 1: |
| 267 | swap(4, 6); |
| 268 | break; |
| 269 | case 2: |
| 270 | swap(5, 6); |
| 271 | break; |
| 272 | } |
| 273 | break; |
| 274 | } |
| 275 | //随机顶层 |
| 276 | for (int i = 0; i < 4; i++) { |
| 277 | swap(i, i + r.nextInt(4 - i)); |
| 278 | } |
| 279 | if (olls.equals("")) |
| 280 | Utils.idxToOri(state[1], r.nextInt(27), 4, true); |
| 281 | else if (olls.equals("X") || olls.equals("PHUTLSA")) { |
| 282 | Utils.idxToOri(state[1], r.nextInt(26) + 1, 4, true); |
| 283 | } else { |
| 284 | char oll = olls.charAt(r.nextInt(olls.length())); |
| 285 | switch (oll) { |
| 286 | case 'P': |
| 287 | twist(0, 2); twist(1, 1); twist(2, 2); twist(3, 1); |
| 288 | break; |
| 289 | case 'H': |
| 290 | twist(0, 2); twist(1, 1); twist(2, 1); twist(3, 2); |
| 291 | break; |
| 292 | case 'U': |