| 56 | } |
| 57 | |
| 58 | private static boolean search(int cp, int ep, int d, int lf) { |
| 59 | if (d == 0) return cp == 0 && ep == 0; |
| 60 | if (cpd[cp] > d || epd[ep] > d) return false; |
| 61 | int y, s; |
| 62 | for (int i = 0; i < 4; i++) { |
| 63 | if (i != lf) { |
| 64 | y = cp; s = ep; |
| 65 | for (int k = 0; k < faces[i]; k++) { |
| 66 | y = cpm[y][i]; |
| 67 | //if (faces[i] == 1) y = cpm[y][i]; |
| 68 | s = epm[s][i]; |
| 69 | if (search(y, s, d - 1, i)) { |
| 70 | seq[d] = i * 3 + (faces[i] == 1 ? 1 : k); |
| 71 | //sb.append(turn[i]).append(faces[i] == 1 ? "2" : suff[k]).append(' '); |
| 72 | return true; |
| 73 | } |
| 74 | } |
| 75 | } |
| 76 | } |
| 77 | return false; |
| 78 | } |
| 79 | |
| 80 | public static String scramble() { |
| 81 | init(); |