| 157 | } |
| 158 | |
| 159 | private static boolean search2(int cp, int ep, int d, int lf) { |
| 160 | if (d == 0) return cp == 0 && ep == 0; |
| 161 | if (Tower.epd[ep] > d || Tower.cpd[cp] > d) return false; |
| 162 | for (int i = 0; i < 4; i++) { |
| 163 | if (i != lf) { |
| 164 | int y = cp, s = ep; |
| 165 | for (int k = 0; k < faces[i]; k++) { |
| 166 | y = Tower.cpm[y][i]; |
| 167 | s = Tower.epm[s][i]; |
| 168 | sol[d + len1] = i * 3 + (faces[i] == 1 ? 1 : k); |
| 169 | if (search2(y, s, d - 1, i)) { |
| 170 | //sb.insert(0, turn2[i]+(i<2?"2":suff[k])+" "); |
| 171 | return true; |
| 172 | } |
| 173 | } |
| 174 | } |
| 175 | } |
| 176 | return false; |
| 177 | } |
| 178 | |
| 179 | private static byte[] img = new byte[96]; |
| 180 | private static void initColor() { |