brain-games-dmitry-sorokin
Version:
project-lvl1-s236
49 lines (38 loc) • 4.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _hexletPairs = require('hexlet-pairs');
var _ = require('..');
var _2 = _interopRequireDefault(_);
var _random = require('../random');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var gameRules = 'Balance the given number.';
var length = function length(str) {
return str.length;
};
var findBalance = function findBalance(num) {
var numbers = ('' + num).split('').map(function (x) {
return Number(x);
});
var total = numbers.reduce(function (a, b) {
return a + b;
}, 0);
var average = Math.floor(total / length(numbers));
var remainder = total % length(numbers);
var newArr = numbers.slice().fill(average);
if (remainder === 0) {
return newArr.join('');
}
return newArr.fill(average + 1, length(newArr) - remainder, length(newArr)).join('');
};
var generateQuestion = function generateQuestion() {
var random = (0, _random.randomNumber)() * 13;
var correctAnswer = findBalance(random);
return (0, _hexletPairs.cons)(random, correctAnswer);
};
var startBalance = function startBalance() {
return (0, _2.default)(gameRules, generateQuestion);
};
exports.default = startBalance;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nYW1lcy9iYWxhbmNlLmpzIl0sIm5hbWVzIjpbImdhbWVSdWxlcyIsImxlbmd0aCIsInN0ciIsImZpbmRCYWxhbmNlIiwibnVtIiwibnVtYmVycyIsInNwbGl0IiwibWFwIiwiTnVtYmVyIiwieCIsInRvdGFsIiwicmVkdWNlIiwiYSIsImIiLCJhdmVyYWdlIiwiTWF0aCIsImZsb29yIiwicmVtYWluZGVyIiwibmV3QXJyIiwic2xpY2UiLCJmaWxsIiwiam9pbiIsImdlbmVyYXRlUXVlc3Rpb24iLCJyYW5kb20iLCJjb3JyZWN0QW5zd2VyIiwic3RhcnRCYWxhbmNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7OztBQUNBOzs7O0FBRUEsSUFBTUEsWUFBWSwyQkFBbEI7QUFDQSxJQUFNQyxTQUFTLFNBQVRBLE1BQVM7QUFBQSxTQUFPQyxJQUFJRCxNQUFYO0FBQUEsQ0FBZjs7QUFFQSxJQUFNRSxjQUFjLFNBQWRBLFdBQWMsQ0FBQ0MsR0FBRCxFQUFTO0FBQzNCLE1BQU1DLFVBQVUsTUFBR0QsR0FBSCxFQUFTRSxLQUFULENBQWUsRUFBZixFQUFtQkMsR0FBbkIsQ0FBdUI7QUFBQSxXQUFLQyxPQUFPQyxDQUFQLENBQUw7QUFBQSxHQUF2QixDQUFoQjtBQUNBLE1BQU1DLFFBQVFMLFFBQVFNLE1BQVIsQ0FBZ0IsVUFBQ0MsQ0FBRCxFQUFJQyxDQUFKO0FBQUEsV0FBVUQsSUFBSUMsQ0FBZDtBQUFBLEdBQWhCLEVBQWtDLENBQWxDLENBQWQ7QUFDQSxNQUFNQyxVQUFVQyxLQUFLQyxLQUFMLENBQVdOLFFBQVFULE9BQU9JLE9BQVAsQ0FBbkIsQ0FBaEI7QUFDQSxNQUFNWSxZQUFZUCxRQUFRVCxPQUFPSSxPQUFQLENBQTFCO0FBQ0EsTUFBTWEsU0FBU2IsUUFBUWMsS0FBUixHQUFnQkMsSUFBaEIsQ0FBcUJOLE9BQXJCLENBQWY7QUFDQSxNQUFJRyxjQUFjLENBQWxCLEVBQXFCO0FBQ25CLFdBQU9DLE9BQU9HLElBQVAsQ0FBWSxFQUFaLENBQVA7QUFDRDtBQUNELFNBQU9ILE9BQU9FLElBQVAsQ0FBWU4sVUFBVSxDQUF0QixFQUF5QmIsT0FBT2lCLE1BQVAsSUFBaUJELFNBQTFDLEVBQXFEaEIsT0FBT2lCLE1BQVAsQ0FBckQsRUFBcUVHLElBQXJFLENBQTBFLEVBQTFFLENBQVA7QUFDRCxDQVZEOztBQVlBLElBQU1DLG1CQUFtQixTQUFuQkEsZ0JBQW1CLEdBQU07QUFDN0IsTUFBTUMsU0FBUyw4QkFBaUIsRUFBaEM7QUFDQSxNQUFNQyxnQkFBZ0JyQixZQUFZb0IsTUFBWixDQUF0QjtBQUNBLFNBQU8sdUJBQUtBLE1BQUwsRUFBYUMsYUFBYixDQUFQO0FBQ0QsQ0FKRDs7QUFNQSxJQUFNQyxlQUFlLFNBQWZBLFlBQWU7QUFBQSxTQUFNLGdCQUFjekIsU0FBZCxFQUF5QnNCLGdCQUF6QixDQUFOO0FBQUEsQ0FBckI7O2tCQUVlRyxZIiwiZmlsZSI6ImJhbGFuY2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25zIH0gZnJvbSAnaGV4bGV0LXBhaXJzJztcbmltcG9ydCBnYW1lSW50ZXJmYWNlIGZyb20gJy4uJztcbmltcG9ydCB7IHJhbmRvbU51bWJlciB9IGZyb20gJy4uL3JhbmRvbSc7XG5cbmNvbnN0IGdhbWVSdWxlcyA9ICdCYWxhbmNlIHRoZSBnaXZlbiBudW1iZXIuJztcbmNvbnN0IGxlbmd0aCA9IHN0ciA9PiBzdHIubGVuZ3RoO1xuXG5jb25zdCBmaW5kQmFsYW5jZSA9IChudW0pID0+IHtcbiAgY29uc3QgbnVtYmVycyA9IGAke251bX1gLnNwbGl0KCcnKS5tYXAoeCA9PiBOdW1iZXIoeCkpO1xuICBjb25zdCB0b3RhbCA9IG51bWJlcnMucmVkdWNlKCgoYSwgYikgPT4gYSArIGIpLCAwKTtcbiAgY29uc3QgYXZlcmFnZSA9IE1hdGguZmxvb3IodG90YWwgLyBsZW5ndGgobnVtYmVycykpO1xuICBjb25zdCByZW1haW5kZXIgPSB0b3RhbCAlIGxlbmd0aChudW1iZXJzKTtcbiAgY29uc3QgbmV3QXJyID0gbnVtYmVycy5zbGljZSgpLmZpbGwoYXZlcmFnZSk7XG4gIGlmIChyZW1haW5kZXIgPT09IDApIHtcbiAgICByZXR1cm4gbmV3QXJyLmpvaW4oJycpO1xuICB9XG4gIHJldHVybiBuZXdBcnIuZmlsbChhdmVyYWdlICsgMSwgbGVuZ3RoKG5ld0FycikgLSByZW1haW5kZXIsIGxlbmd0aChuZXdBcnIpKS5qb2luKCcnKTtcbn07XG5cbmNvbnN0IGdlbmVyYXRlUXVlc3Rpb24gPSAoKSA9PiB7XG4gIGNvbnN0IHJhbmRvbSA9IHJhbmRvbU51bWJlcigpICogMTM7XG4gIGNvbnN0IGNvcnJlY3RBbnN3ZXIgPSBmaW5kQmFsYW5jZShyYW5kb20pO1xuICByZXR1cm4gY29ucyhyYW5kb20sIGNvcnJlY3RBbnN3ZXIpO1xufTtcblxuY29uc3Qgc3RhcnRCYWxhbmNlID0gKCkgPT4gZ2FtZUludGVyZmFjZShnYW1lUnVsZXMsIGdlbmVyYXRlUXVlc3Rpb24pO1xuXG5leHBvcnQgZGVmYXVsdCBzdGFydEJhbGFuY2U7XG4iXX0=