UNPKG

@nox_wave/hexlet-braingames

Version:
62 lines (50 loc) 5.6 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _hexletPairs = require('hexlet-pairs'); var _ = require('..'); var _2 = _interopRequireDefault(_); var _utils = require('../utils'); var _utils2 = _interopRequireDefault(_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 minRandomInteger = 10; var maxRandomInteger = 9999; var sort = function sort(arr) { return [].concat(_toConsumableArray(arr)).sort(); }; var balance = function balance(num) { var iter = function iter(digits) { var minDigit = Math.min.apply(Math, _toConsumableArray(digits)); var maxDigit = Math.max.apply(Math, _toConsumableArray(digits)); var minIndex = digits.indexOf(minDigit); var maxIndex = digits.indexOf(maxDigit); var delta = maxDigit - minDigit; if (delta <= 1 || minDigit === maxDigit) { return sort(digits).join(''); } var newDigits = digits.map(function (digit, idx) { if (idx === minIndex) return digit + 1; if (idx === maxIndex) return digit - 1; return digit; }); return iter(newDigits); }; return iter(('' + num).split('').map(function (d) { return Number.parseInt(d, 10); })); }; exports.default = function () { var getGameData = function getGameData() { var num = (0, _utils2.default)(minRandomInteger, maxRandomInteger); var question = '' + num; var answer = balance(num); return (0, _hexletPairs.cons)(question, answer); }; (0, _2.default)({ instruction: 'Balance the given number.', getGameData: getGameData }); }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nYW1lcy9iYWxhbmNlLmpzIl0sIm5hbWVzIjpbIm1pblJhbmRvbUludGVnZXIiLCJtYXhSYW5kb21JbnRlZ2VyIiwic29ydCIsImFyciIsImJhbGFuY2UiLCJudW0iLCJpdGVyIiwiZGlnaXRzIiwibWluRGlnaXQiLCJNYXRoIiwibWluIiwibWF4RGlnaXQiLCJtYXgiLCJtaW5JbmRleCIsImluZGV4T2YiLCJtYXhJbmRleCIsImRlbHRhIiwiam9pbiIsIm5ld0RpZ2l0cyIsIm1hcCIsImRpZ2l0IiwiaWR4Iiwic3BsaXQiLCJOdW1iZXIiLCJwYXJzZUludCIsImQiLCJnZXRHYW1lRGF0YSIsInF1ZXN0aW9uIiwiYW5zd2VyIiwiaW5zdHJ1Y3Rpb24iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOzs7O0FBQ0E7Ozs7Ozs7O0FBRUEsSUFBTUEsbUJBQW1CLEVBQXpCO0FBQ0EsSUFBTUMsbUJBQW1CLElBQXpCOztBQUVBLElBQU1DLE9BQU8sU0FBUEEsSUFBTztBQUFBLFNBQU8sNkJBQUlDLEdBQUosR0FBU0QsSUFBVCxFQUFQO0FBQUEsQ0FBYjs7QUFFQSxJQUFNRSxVQUFVLFNBQVZBLE9BQVUsQ0FBQ0MsR0FBRCxFQUFTO0FBQ3ZCLE1BQU1DLE9BQU8sU0FBUEEsSUFBTyxDQUFDQyxNQUFELEVBQVk7QUFDdkIsUUFBTUMsV0FBV0MsS0FBS0MsR0FBTCxnQ0FBWUgsTUFBWixFQUFqQjtBQUNBLFFBQU1JLFdBQVdGLEtBQUtHLEdBQUwsZ0NBQVlMLE1BQVosRUFBakI7QUFDQSxRQUFNTSxXQUFXTixPQUFPTyxPQUFQLENBQWVOLFFBQWYsQ0FBakI7QUFDQSxRQUFNTyxXQUFXUixPQUFPTyxPQUFQLENBQWVILFFBQWYsQ0FBakI7QUFDQSxRQUFNSyxRQUFRTCxXQUFXSCxRQUF6QjtBQUNBLFFBQUlRLFNBQVMsQ0FBVCxJQUFjUixhQUFhRyxRQUEvQixFQUF5QztBQUN2QyxhQUFPVCxLQUFLSyxNQUFMLEVBQWFVLElBQWIsQ0FBa0IsRUFBbEIsQ0FBUDtBQUNEO0FBQ0QsUUFBTUMsWUFBWVgsT0FBT1ksR0FBUCxDQUFXLFVBQUNDLEtBQUQsRUFBUUMsR0FBUixFQUFnQjtBQUMzQyxVQUFJQSxRQUFRUixRQUFaLEVBQXNCLE9BQU9PLFFBQVEsQ0FBZjtBQUN0QixVQUFJQyxRQUFRTixRQUFaLEVBQXNCLE9BQU9LLFFBQVEsQ0FBZjtBQUN0QixhQUFPQSxLQUFQO0FBQ0QsS0FKaUIsQ0FBbEI7QUFLQSxXQUFPZCxLQUFLWSxTQUFMLENBQVA7QUFDRCxHQWZEO0FBZ0JBLFNBQU9aLEtBQUssTUFBR0QsR0FBSCxFQUFTaUIsS0FBVCxDQUFlLEVBQWYsRUFBbUJILEdBQW5CLENBQXVCO0FBQUEsV0FBS0ksT0FBT0MsUUFBUCxDQUFnQkMsQ0FBaEIsRUFBbUIsRUFBbkIsQ0FBTDtBQUFBLEdBQXZCLENBQUwsQ0FBUDtBQUNELENBbEJEOztrQkFvQmUsWUFBTTtBQUNuQixNQUFNQyxjQUFjLFNBQWRBLFdBQWMsR0FBTTtBQUN4QixRQUFNckIsTUFBTSxxQkFBaUJMLGdCQUFqQixFQUFtQ0MsZ0JBQW5DLENBQVo7QUFDQSxRQUFNMEIsZ0JBQWN0QixHQUFwQjtBQUNBLFFBQU11QixTQUFTeEIsUUFBUUMsR0FBUixDQUFmO0FBQ0EsV0FBTyx1QkFBS3NCLFFBQUwsRUFBZUMsTUFBZixDQUFQO0FBQ0QsR0FMRDtBQU1BLGtCQUFRO0FBQ05DLGlCQUFhLDJCQURQO0FBRU5IO0FBRk0sR0FBUjtBQUlELEMiLCJmaWxlIjoiYmFsYW5jZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbnMgfSBmcm9tICdoZXhsZXQtcGFpcnMnO1xuaW1wb3J0IHJ1bkdhbWUgZnJvbSAnLi4nO1xuaW1wb3J0IGdldFJhbmRvbUludGVnZXIgZnJvbSAnLi4vdXRpbHMnO1xuXG5jb25zdCBtaW5SYW5kb21JbnRlZ2VyID0gMTA7XG5jb25zdCBtYXhSYW5kb21JbnRlZ2VyID0gOTk5OTtcblxuY29uc3Qgc29ydCA9IGFyciA9PiBbLi4uYXJyXS5zb3J0KCk7XG5cbmNvbnN0IGJhbGFuY2UgPSAobnVtKSA9PiB7XG4gIGNvbnN0IGl0ZXIgPSAoZGlnaXRzKSA9PiB7XG4gICAgY29uc3QgbWluRGlnaXQgPSBNYXRoLm1pbiguLi5kaWdpdHMpO1xuICAgIGNvbnN0IG1heERpZ2l0ID0gTWF0aC5tYXgoLi4uZGlnaXRzKTtcbiAgICBjb25zdCBtaW5JbmRleCA9IGRpZ2l0cy5pbmRleE9mKG1pbkRpZ2l0KTtcbiAgICBjb25zdCBtYXhJbmRleCA9IGRpZ2l0cy5pbmRleE9mKG1heERpZ2l0KTtcbiAgICBjb25zdCBkZWx0YSA9IG1heERpZ2l0IC0gbWluRGlnaXQ7XG4gICAgaWYgKGRlbHRhIDw9IDEgfHwgbWluRGlnaXQgPT09IG1heERpZ2l0KSB7XG4gICAgICByZXR1cm4gc29ydChkaWdpdHMpLmpvaW4oJycpO1xuICAgIH1cbiAgICBjb25zdCBuZXdEaWdpdHMgPSBkaWdpdHMubWFwKChkaWdpdCwgaWR4KSA9PiB7XG4gICAgICBpZiAoaWR4ID09PSBtaW5JbmRleCkgcmV0dXJuIGRpZ2l0ICsgMTtcbiAgICAgIGlmIChpZHggPT09IG1heEluZGV4KSByZXR1cm4gZGlnaXQgLSAxO1xuICAgICAgcmV0dXJuIGRpZ2l0O1xuICAgIH0pO1xuICAgIHJldHVybiBpdGVyKG5ld0RpZ2l0cyk7XG4gIH07XG4gIHJldHVybiBpdGVyKGAke251bX1gLnNwbGl0KCcnKS5tYXAoZCA9PiBOdW1iZXIucGFyc2VJbnQoZCwgMTApKSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCAoKSA9PiB7XG4gIGNvbnN0IGdldEdhbWVEYXRhID0gKCkgPT4ge1xuICAgIGNvbnN0IG51bSA9IGdldFJhbmRvbUludGVnZXIobWluUmFuZG9tSW50ZWdlciwgbWF4UmFuZG9tSW50ZWdlcik7XG4gICAgY29uc3QgcXVlc3Rpb24gPSBgJHtudW19YDtcbiAgICBjb25zdCBhbnN3ZXIgPSBiYWxhbmNlKG51bSk7XG4gICAgcmV0dXJuIGNvbnMocXVlc3Rpb24sIGFuc3dlcik7XG4gIH07XG4gIHJ1bkdhbWUoe1xuICAgIGluc3RydWN0aW9uOiAnQmFsYW5jZSB0aGUgZ2l2ZW4gbnVtYmVyLicsXG4gICAgZ2V0R2FtZURhdGEsXG4gIH0pO1xufTtcbiJdfQ==