scramble-generator
Version:
Generate scrambles for Rubik's cubes
90 lines (62 loc) • 2.98 kB
Markdown
# scramble-generator [](https://www.npmjs.com/package/scramble-generator)
npm install scramble-generator
**0.2.0 has breaking changes**. If you're using < v0.2.0, see the [upgrading section](#upgrading).
## API
<!-- Generated by documentation.js. Update this documentation by updating the source code. -->
### generateScramble
Generates a random scramble for the given cube size.
**Parameters**
- `$0` **any** (optional, default `{}`)
- `$0.cubeSize` (optional, default `3`)
- `$0.length` (optional, default `(cubeSize-2)*20||8`)
- `$0.formatted` (optional, default `true`)
**Examples**
```javascript
import generateScramble from 'scramble-generator';
generateScramble();
// R' U F D' L ...
generateScramble({ cubeSize: 3, formatted: false });
// [ { face: 'U', inverted: false, double: true },
// { face: 'R', inverted: true, double: false },
// { face: 'D', inverted: false, double: true }, ... ]
```
Returns **([string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) \| [Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<Move>)**
### formatScramble
Formats a given scramble as a string.
**Parameters**
- `scramble` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<Move>** List of Move objects representing a scramble to be formatted.
**Examples**
```javascript
import { formatScramble } from 'scramble-generator';
import { Faces } from 'scramble-utils-common';
format([{
face: Faces.R,
inverted: true
}, {
face: Faces.U,
double: true
}, {
face: Faces.L
}])
// "R' U2 L"
```
Returns **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** String representation of the given scramble.
## Upgrading
### From v0.1.x
**v0.2.0 has breaking changes**. To upgrade from an earlier version:
```javascript
// Before:
import { formatted, generate, format, parse } from 'scramble-generator';
formatted(); // R U' D ...
const scramble = generate(); // [{ face: 'R', longFace: 'RIGHT', inverted: true, double: false }, ...]
format(scramble) // R' ...
parse("R' U L") // [{ face: 'R', longFace: 'RIGHT', inverted: true, double: false }, ...]
// After
import generateScramble, { formatScramble } from 'scramble-generator';
import parseScramble from 'scramble-parser';
generateScramble(); // R U' D ...
const scramble = generateScramble({ formatted: false }); // [{ face: 'R', inverted: true, double: false }, ...] (NB: `longFace` has been removed)
formatScramble(scramble); // R' ...
parseScramble("R' U L"); // [{ face: 'R', inverted: true, double: false }, ...] (NB: `longFace` has been removed)
```
These breaking changes are necessary to facilitate moving towards v1.0.0, after which the package will adhere strictly to semver. There might be some more breaking changes