A customizable random state Rubik's Cube scrambler
This library uses a random state scrambler to generate scrambles for a Rubik's Cube. Instead of constructing a scramble by creating a random sequence of moves, a randomly scrambled representation of a Rubik's Cube is generated and then a solving algortihm is applied to it. The scramble generated is the inverse of the solution. This process is described in detail below.
A simulated Rubik's Cube is generated and all of the corners and edges are removed leaving only the core.
The corner and edge pieces are randomly placed back into the core, resulting in a Rubik's Cube in a random state. This is the state a Rubik's Cube will be in when the generated scramble is applied to a solved Rubik's Cube.
The kociemba two-phase solving algorithm is applied to the randomly assembled Rubik's Cube. The inverse of the solution is the completed scramble.