UNPKG

brain-games-dmitry-sorokin

Version:
49 lines (38 loc) 4.35 kB
'use strict'; 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=