The purpose of this project and its details are described on speedsolving forum in this post.
For each zbll case, there is a set of algorithms defined in scripts/casesmap.js. To generate a scramble for a specific ZBLL case, the program randomly picks one of the algorithms for this case and inverses it. After that, an additional procedure is performed to disguise the scramble (see applyRotationForAlgorithm()
function in scripts/timer.js).
For every ZBLL case, all the algorithms must satisfy these requirements:
- Alg should not be too short or too long, otherwise it can expose the case
- Alg should not start or end up with the AUF (U layer move)
- There should be enough algs for each ZBLL case to not let the user memorize scrambles during practicing
- None of two algs should be each other's rotation (like R U L' D2 an F U B' D2) because such scrambles will generate the same set of four algs after
applyRotationForAlgorithm()
- Generally, for each ZBLL case, algs should be as different from each other as possible
For contributing, follow the "fork-and-pull" Git workflow.
- Fork the repo on GitHub
- Clone the project to your own machine
- Commit changes to your own branch
- Push your work back up to your fork
- Submit a Pull request so that I can review your changes