Releases: Owstin/scrambow
Optimal clock scrambles (again)
- Added back the optimal clock scrambler from cstimer
I thought the scrambler was the way old one from the original jsss code, but that was replaced in 1.6.0 and was removed in 1.8.0 😵.
Thanks again to @JoshM2 for adding this scrambler back in.
Types that generate optimal clock scrambles are:
- clockoptimal
- clock-optimal
- clock-o
Better Clock scrambles
For years I ignored the fact the the clock scrambles were different from regular WCA scrambles. No longer.
Big thanks to @JoshM2 for taking the time to update this scrambler. 🥳
ES6 and custom scramblers
All imports and exports are now done using the es6 syntax.
Custom scramblers can now be added using registerCustomScrambler
.
Only prereq is that the scrambler needs to have the following methods present: initialize
, setRandomSource
, setScrambleLength
, getRandomScramble
. Strictly speaking, only getRandomScramble
is required, but Scrambow can call the other methods so they need to exist.
example from readme:
const myCustomScrambler = (() => {
const initialize = () => { /* do nothing */ };
const setRandomSource = () => { /* do nothing */ };
const setScrambleLength = () => { /* do nothing */ };
const getRandomScramble = () => ({ scramble_string: 'cool scramble' });
return {
initialize,
setRandomSource,
setScrambleLength,
getRandomScramble
};
})();
const scrambow = new Scrambow();
scrambow.registerCustomScrambler('myCustomScrambler', myCustomScrambler)
scrambow.setType('myCustomScrambler').get(); // { scramble_string: 'cool scramble' }
The syntax of the scrambler isn't strict either. They could be simple objects, classes, or iifes like the example.
WCA notation for clock scrambler
scrambow -t clock
# UR4+ DL2+ UL4+ R2+ D6+ L3- ALL1- y2 DR1- U1+ D5+ L4- UR DR DL UL
- Default scramble length for Fto is now 30
Big thanks to @coder13 for the new clock scrambler!
New Fto scrambler and WCA notation for big cubes
- Fto scrambler support
# cli usage
scrambow -t fto
// js usage
const scrambler = new Scrambow('fto');
scrambler.get();
scrambow -t 666
# 3Uw Uw Fw D' R2 3Fw Uw' 3Rw' 3Uw' Uw Fw 3Uw Fw2 Rw 3Uw' Uw' B2 Bw2 Lw2 B2 Bw' 3Fw2 Fw2 F D' U2 Bw2 Lw' Bw2 D U F Rw' 3Uw' 3Fw F2 Dw U L Lw2 Rw Bw2 Uw Fw' Uw' Bw2 D B' Bw' 3Uw 3Rw B Fw' F2 Uw2 Rw D2 Dw' Uw B2 3Rw' U2 R2 Uw 3Fw' L2 Fw2 Uw B Fw
Thanks @coder13 and @saranshgrover!
CMLL update and FMC
- Added CO subset selection to CMLL
# cli usage
# generate 10 scrambles with antisune or sune subset
scmrabow -t cmll -n 10 As S
// js usage
const scrambler = new Scrambow('cmll').setArgs('As', 'S');
scrambler.get();
- Added FMC scrambler
- aliases: 333fm, 333fmc, fmc
3x3 restricted move subsets
- Added 3x3 restricted move scramblers
- LSE, RU, LU, RUD, and RUL
- Add aliases for common names
- 222: 2, 2x2, 2x2x2
- 333: 3, 3x3, 3x3x3
- 444: 4, 4x4, 4x4x4
- 555: 5, 5x5, 5x5x5
- sq1: square1, square-1, squan
- minx: mega, megaminx
- pyram: pyra, praminx
- lse: mu
Better api for setArgs
Small change from v1.2.0
// 1.2.1
new Scrambow().setType('zz').setArgs('0', '2');
// 1.2.0
new Scrambow().setType('zz').setArgs(['0', '2']);
Random state scramblers with args!
New scramblers
- 2gll
- cls
- trizbll
- tsle
- zbll
- zz