| 288 | } |
| 289 | |
| 290 | private boolean init2() { |
| 291 | d.copy(c); |
| 292 | for (int i = 0; i < movelen1; i++) |
| 293 | d.doMove(move[i]); |
| 294 | d.getSquare(sq); |
| 295 | |
| 296 | int edge = sq.edgeperm; |
| 297 | int corner = sq.cornperm; |
| 298 | int ml = sq.ml; |
| 299 | |
| 300 | int prun = Math.max(Square.SquarePrun[sq.edgeperm << 1 | ml], |
| 301 | Square.SquarePrun[sq.cornperm << 1 | ml]); |
| 302 | |
| 303 | for (int i = prun; i < maxlen2; i++) { |
| 304 | if (phase2(edge, corner, sq.topEdgeFirst, sq.botEdgeFirst, ml, i, movelen1, 0)) { |
| 305 | sol_string = move2string(i + movelen1); |
| 306 | return true; |
| 307 | } |
| 308 | } |
| 309 | |
| 310 | return false; |
| 311 | } |
| 312 | |
| 313 | private String move2string(int len) { |
| 314 | //TODO whether to invert the solution or not should be set by params. |