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