| 81 | |
| 82 | private static String[] turn = {"U", "D", "F", "B", "L", "R"}; |
| 83 | private static boolean search(int cp1, int cp2, int ep1, int ep2, int ep3, int d, int l) { |
| 84 | if (d == 0) return cp1 == 0 && cp2 == 0 && ep1 == 0 && ep2 == 0 && ep3 == 0; |
| 85 | if (cpd[cp1 * 24 + cp2] > d || epd[ep1][ep2][ep3] > d) return false; |
| 86 | for (int n = 0; n < 6; n++) { |
| 87 | if (n != l) { |
| 88 | int c1n = cpm[cp1][n], c2n = cpm[cp2][n], |
| 89 | e1n = epm[0][ep1][n], e2n = epm[1][ep2][n], e3n = epm[2][ep3][n]; |
| 90 | if (search(c1n, c2n, e1n, e2n, e3n, d - 1, n)) { |
| 91 | seq[d] = n; |
| 92 | //sb.insert(0, turn[n] + "2 "); |
| 93 | return true; |
| 94 | } |
| 95 | } |
| 96 | } |
| 97 | return false; |
| 98 | } |
| 99 | |
| 100 | public static String scramble(Random r) { |
| 101 | int cp1, cp2; |