@nox_wave/hexlet-braingames
Version:
Brain Games. A set of mini-games.
62 lines (50 loc) • 5.6 kB
JavaScript
;
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==