UNPKG

console-game

Version:
50 lines (37 loc) 4.09 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _gamesEngine = require('../games-engine'); var _gamesEngine2 = _interopRequireDefault(_gamesEngine); var _utils = require('../utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } var rules = 'Balance the given number.'; var balance = function balance(arr) { var lastIndx = arr.length - 1; if (arr[lastIndx] - arr[0] <= 1) { return arr; } var newArr = (0, _utils.ascSort)([arr[0] + 1].concat(_toConsumableArray(arr.slice(1, lastIndx)), [arr[lastIndx] - 1])); return balance(newArr); }; var getBalancedNum = function getBalancedNum(num) { var digits = num.toString().split('').map(function (i) { return Number(i); }); var ascDigits = (0, _utils.ascSort)(digits); return balance(ascDigits).join(''); }; var getGameSet = function getGameSet() { var num = (0, _utils.getRandomNumber)(); return { question: num, answer: getBalancedNum(num) }; }; var balanceNumber = function balanceNumber() { return (0, _gamesEngine2.default)(rules, getGameSet); }; exports.default = balanceNumber; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nYW1lcy9icmFpbi1iYWxhbmNlLmpzIl0sIm5hbWVzIjpbInJ1bGVzIiwiYmFsYW5jZSIsImFyciIsImxhc3RJbmR4IiwibGVuZ3RoIiwibmV3QXJyIiwic2xpY2UiLCJnZXRCYWxhbmNlZE51bSIsIm51bSIsImRpZ2l0cyIsInRvU3RyaW5nIiwic3BsaXQiLCJtYXAiLCJOdW1iZXIiLCJpIiwiYXNjRGlnaXRzIiwiam9pbiIsImdldEdhbWVTZXQiLCJxdWVzdGlvbiIsImFuc3dlciIsImJhbGFuY2VOdW1iZXIiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLFFBQVEsMkJBQWQ7O0FBRUEsSUFBTUMsVUFBVSxTQUFWQSxPQUFVLENBQUNDLEdBQUQsRUFBUztBQUN2QixNQUFNQyxXQUFXRCxJQUFJRSxNQUFKLEdBQWEsQ0FBOUI7QUFDQSxNQUFLRixJQUFJQyxRQUFKLElBQWdCRCxJQUFJLENBQUosQ0FBakIsSUFBNEIsQ0FBaEMsRUFBbUM7QUFDakMsV0FBT0EsR0FBUDtBQUNEO0FBQ0QsTUFBTUcsU0FBUyxxQkFBU0gsSUFBSSxDQUFKLElBQVMsQ0FBbEIsNEJBQXdCQSxJQUFJSSxLQUFKLENBQVUsQ0FBVixFQUFhSCxRQUFiLENBQXhCLElBQWdERCxJQUFJQyxRQUFKLElBQWdCLENBQWhFLEdBQWY7QUFDQSxTQUFPRixRQUFRSSxNQUFSLENBQVA7QUFDRCxDQVBEOztBQVNBLElBQU1FLGlCQUFpQixTQUFqQkEsY0FBaUIsQ0FBQ0MsR0FBRCxFQUFTO0FBQzlCLE1BQU1DLFNBQVNELElBQUlFLFFBQUosR0FBZUMsS0FBZixDQUFxQixFQUFyQixFQUF5QkMsR0FBekIsQ0FBNkI7QUFBQSxXQUFLQyxPQUFPQyxDQUFQLENBQUw7QUFBQSxHQUE3QixDQUFmO0FBQ0EsTUFBTUMsWUFBWSxvQkFBUU4sTUFBUixDQUFsQjtBQUNBLFNBQVFSLFFBQVFjLFNBQVIsQ0FBRCxDQUFxQkMsSUFBckIsQ0FBMEIsRUFBMUIsQ0FBUDtBQUNELENBSkQ7O0FBTUEsSUFBTUMsYUFBYSxTQUFiQSxVQUFhLEdBQU07QUFDdkIsTUFBTVQsTUFBTSw2QkFBWjs7QUFFQSxTQUFPO0FBQ0xVLGNBQVVWLEdBREw7QUFFTFcsWUFBUVosZUFBZUMsR0FBZjtBQUZILEdBQVA7QUFJRCxDQVBEOztBQVNBLElBQU1ZLGdCQUFnQixTQUFoQkEsYUFBZ0I7QUFBQSxTQUFNLDJCQUFTcEIsS0FBVCxFQUFnQmlCLFVBQWhCLENBQU47QUFBQSxDQUF0Qjs7a0JBRWVHLGEiLCJmaWxlIjoiYnJhaW4tYmFsYW5jZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtYWtlR2FtZSBmcm9tICcuLi9nYW1lcy1lbmdpbmUnO1xuaW1wb3J0IHsgZ2V0UmFuZG9tTnVtYmVyLCBhc2NTb3J0IH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jb25zdCBydWxlcyA9ICdCYWxhbmNlIHRoZSBnaXZlbiBudW1iZXIuJztcblxuY29uc3QgYmFsYW5jZSA9IChhcnIpID0+IHtcbiAgY29uc3QgbGFzdEluZHggPSBhcnIubGVuZ3RoIC0gMTtcbiAgaWYgKChhcnJbbGFzdEluZHhdIC0gYXJyWzBdKSA8PSAxKSB7XG4gICAgcmV0dXJuIGFycjtcbiAgfVxuICBjb25zdCBuZXdBcnIgPSBhc2NTb3J0KFthcnJbMF0gKyAxLCAuLi5hcnIuc2xpY2UoMSwgbGFzdEluZHgpLCBhcnJbbGFzdEluZHhdIC0gMV0pO1xuICByZXR1cm4gYmFsYW5jZShuZXdBcnIpO1xufTtcblxuY29uc3QgZ2V0QmFsYW5jZWROdW0gPSAobnVtKSA9PiB7XG4gIGNvbnN0IGRpZ2l0cyA9IG51bS50b1N0cmluZygpLnNwbGl0KCcnKS5tYXAoaSA9PiBOdW1iZXIoaSkpO1xuICBjb25zdCBhc2NEaWdpdHMgPSBhc2NTb3J0KGRpZ2l0cyk7XG4gIHJldHVybiAoYmFsYW5jZShhc2NEaWdpdHMpKS5qb2luKCcnKTtcbn07XG5cbmNvbnN0IGdldEdhbWVTZXQgPSAoKSA9PiB7XG4gIGNvbnN0IG51bSA9IGdldFJhbmRvbU51bWJlcigpO1xuXG4gIHJldHVybiB7XG4gICAgcXVlc3Rpb246IG51bSxcbiAgICBhbnN3ZXI6IGdldEJhbGFuY2VkTnVtKG51bSksXG4gIH07XG59O1xuXG5jb25zdCBiYWxhbmNlTnVtYmVyID0gKCkgPT4gbWFrZUdhbWUocnVsZXMsIGdldEdhbWVTZXQpO1xuXG5leHBvcnQgZGVmYXVsdCBiYWxhbmNlTnVtYmVyO1xuIl19