RaMSDeL is a Random Move Scrambler Definition Language
The primary purpose of Ramsdel is in my scramble analysis project, however it is provided here in case someone else has the need to generate large amounts of random-move scrambles.
The general idea is that scrambles are defined using somewhat familiar syntax, and can create a wide range of different scramblers.
An example of a regular 25-move 6-gen 3x3 scrambler would be
<U,D,L,R,F,B> * 25
which would produce scramblers such as
F2 R2 F' U' B R' D2 F R2 U L U R' F' R B U2 L U2 R' L2 B' D2 L' F
Moves can be left out of the definition to exclude them from the scrambler, so a definition such as
<R,U> * 25
will produce a scramble like
U R2 U' R' U2 R U' R2 U R U' R U2 R U' R U2 R2 U2 R' U R' U2 R U2
If you don't want certain moves to be implicitly allowed, such as R'
from allowing R
,
square brackets can be used to require each move to be explicitly allowed.
This means that a definition such as
[R,R',U,U'] * 25
will yield results similar to
R' U R U R U R' U R U' R U' R' U' R' U' R U' R U' R' U' R' U R'
You can also combine terms with a +
symbol:
<R,U> * 3 + <L,D> * 3
yields U' R' U2 L' D' L2
If a term doesn't match the format given, it's taken as a constant. This lets you include constants terms in your scrambles:
<R,U> * 3 + y2 + <R,U> * 3
yields U2 R' U' y2 U R U
Currently only 3x3 is supported, however if there is any need for other puzzles they can be added.