Example #1
0
 public void solve(final EncodedCube cube) {
   this.cube = cube;
   isInterrupted = false;
   initStatistics();
   stackA[0].setCubeStateA(
       cube.twist, cube.flip, transform.mEdgePos_to_mEdgePosSet(cube.mEdgePos));
   stackA[0].setTurnState(cube.symmetry, turnList);
   final int ct_ef_d = pruneA.get_twist_flip_startDist(stackA[0].twist, stackA[0].flip);
   final int ct_meps_d =
       pruneA.get_twist_mEdgePosSet_startDist(stackA[0].twist, stackA[0].mEdgePosSet);
   final int ef_meps_d =
       pruneA.get_flip_mEdgePosSet_startDist(stackA[0].flip, stackA[0].mEdgePosSet);
   final int ct_d = pruneA.get_twist_startDist(stackA[0].twist);
   final int ef_d = pruneA.get_flip_startDist(stackA[0].flip);
   stackA[0].setDists(ct_ef_d, ct_meps_d, ef_meps_d, ct_d, ef_d);
   for (int maxALength = stackA[0].getMaxDist();
       shouldContinueSearchingA(maxALength);
       maxALength++) {
     reporter.depthChanged(maxALength);
     searchA(maxALength);
   }
   reportStatistics();
 }