@Override public PuzzleStateAndGenerator generateRandomMoves(Random r) { TwoByTwoState state = twoSolver.randomState(r); String scramble = twoSolver.generateExactly(state, TWO_BY_TWO_MIN_SCRAMBLE_LENGTH); AlgorithmBuilder ab = new AlgorithmBuilder(this, MergingMode.CANONICALIZE_MOVES); try { ab.appendAlgorithm(scramble); } catch (InvalidMoveException e) { azzert(false, new InvalidScrambleException(scramble, e)); } return ab.getStateAndGenerator(); }
protected String solveIn(PuzzleState ps, int n) { CubeState cs = (CubeState) ps; String solution = twoSolver.solveIn(cs.toTwoByTwoState(), n); return solution; }