UNPKG

scramble-generator

Version:
67 lines (57 loc) 2.26 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Faces = exports.formatScramble = undefined; var _scrambleUtilsCommon = require('scramble-utils-common'); Object.defineProperty(exports, 'Faces', { enumerable: true, get: function get() { return _scrambleUtilsCommon.Faces; } }); var _helpers = require('./helpers'); var _formatter = require('./formatter'); var _formatter2 = _interopRequireDefault(_formatter); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Generates a random scramble for the given cube size. * @example * 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 }, ... ] */ var generateScramble = function generateScramble() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref$cubeSize = _ref.cubeSize, cubeSize = _ref$cubeSize === undefined ? 3 : _ref$cubeSize, _ref$length = _ref.length, length = _ref$length === undefined ? (cubeSize - 2) * 20 || 8 : _ref$length, _ref$formatted = _ref.formatted, formatted = _ref$formatted === undefined ? true : _ref$formatted; var scramble = []; var maxLayers = Math.floor(cubeSize / 2); var lastAxis = void 0; for (var i = 0; i < length; i++) { var faceSelections = _scrambleUtilsCommon.FaceList.filter(function (face) { return _scrambleUtilsCommon.FaceAxisInfo[face] !== lastAxis; }); var rand = (0, _helpers.randomInRange)(0, faceSelections.length); var face = faceSelections[rand]; lastAxis = _scrambleUtilsCommon.FaceAxisInfo[face]; scramble.push((0, _scrambleUtilsCommon.createMove)({ face: face, inverted: (0, _helpers.coinFlip)(), double: (0, _helpers.coinFlip)(), layerCount: (0, _helpers.randomInRange)(1, maxLayers + 1) })); } return formatted ? (0, _formatter2.default)(scramble) : scramble; }; exports.formatScramble = _formatter2.default; exports.default = generateScramble;