newbymikhail
Version:
brain-games project for student
68 lines (49 loc) • 5.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _hexletPairs = require('hexlet-pairs');
var _game = require('../game');
var _game2 = _interopRequireDefault(_game);
var _utils = require('../utils');
var _utils2 = _interopRequireDefault(_utils);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var descriptionGame = 'Balance the given number.';
var max = 5000;
var sumDigits = function sumDigits(number) {
var result = String(number).split('').map(Number).reduce(function (a, b) {
return a + b;
}, 0);
return result;
};
var concat = function concat(emptyString, num, count) {
var str = emptyString;
if (count > 0) {
str += num;
return concat(str, num, count - 1);
}
return str;
};
var getBalance = function getBalance(number) {
var countDigits = String(number).length;
var sum = sumDigits(number);
if (sum % countDigits === 0) return concat('', sum / countDigits, countDigits);
var number1 = Math.floor(sum / countDigits);
var number2 = number1 + 1;
var a = void 0;
for (var i = 1; i < countDigits; i += 1) {
a = concat('', number1, countDigits - i) + concat('', number2, i);
if (sumDigits(Number(a)) === sum) return a;
}
return a;
};
var questionAndAnswer = function questionAndAnswer() {
var number = (0, _utils2.default)(max);
var question = 'Question: ' + number;
var answer = getBalance(number);
return (0, _hexletPairs.cons)(question, '' + answer);
};
exports.default = function () {
return (0, _game2.default)(descriptionGame, questionAndAnswer);
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nYW1lcy9iYWxhbmNlLmpzIl0sIm5hbWVzIjpbImRlc2NyaXB0aW9uR2FtZSIsIm1heCIsInN1bURpZ2l0cyIsIm51bWJlciIsInJlc3VsdCIsIlN0cmluZyIsInNwbGl0IiwibWFwIiwiTnVtYmVyIiwicmVkdWNlIiwiYSIsImIiLCJjb25jYXQiLCJlbXB0eVN0cmluZyIsIm51bSIsImNvdW50Iiwic3RyIiwiZ2V0QmFsYW5jZSIsImNvdW50RGlnaXRzIiwibGVuZ3RoIiwic3VtIiwibnVtYmVyMSIsIk1hdGgiLCJmbG9vciIsIm51bWJlcjIiLCJpIiwicXVlc3Rpb25BbmRBbnN3ZXIiLCJxdWVzdGlvbiIsImFuc3dlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsa0JBQWtCLDJCQUF4QjtBQUNBLElBQU1DLE1BQU0sSUFBWjs7QUFFQSxJQUFNQyxZQUFZLFNBQVpBLFNBQVksQ0FBQ0MsTUFBRCxFQUFZO0FBQzVCLE1BQU1DLFNBQVNDLE9BQU9GLE1BQVAsRUFBZUcsS0FBZixDQUFxQixFQUFyQixFQUF5QkMsR0FBekIsQ0FBNkJDLE1BQTdCLEVBQXFDQyxNQUFyQyxDQUE0QyxVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSxXQUFVRCxJQUFJQyxDQUFkO0FBQUEsR0FBNUMsRUFBNkQsQ0FBN0QsQ0FBZjtBQUNBLFNBQU9QLE1BQVA7QUFDRCxDQUhEOztBQUtBLElBQU1RLFNBQVMsU0FBVEEsTUFBUyxDQUFDQyxXQUFELEVBQWNDLEdBQWQsRUFBbUJDLEtBQW5CLEVBQTZCO0FBQzFDLE1BQUlDLE1BQU1ILFdBQVY7O0FBRUEsTUFBSUUsUUFBUSxDQUFaLEVBQWU7QUFDYkMsV0FBT0YsR0FBUDtBQUNBLFdBQU9GLE9BQU9JLEdBQVAsRUFBWUYsR0FBWixFQUFpQkMsUUFBUSxDQUF6QixDQUFQO0FBQ0Q7O0FBRUQsU0FBT0MsR0FBUDtBQUNELENBVEQ7O0FBV0EsSUFBTUMsYUFBYSxTQUFiQSxVQUFhLENBQUNkLE1BQUQsRUFBWTtBQUM3QixNQUFNZSxjQUFjYixPQUFPRixNQUFQLEVBQWVnQixNQUFuQztBQUNBLE1BQU1DLE1BQU1sQixVQUFVQyxNQUFWLENBQVo7O0FBRUEsTUFBSWlCLE1BQU1GLFdBQU4sS0FBc0IsQ0FBMUIsRUFBNkIsT0FBT04sT0FBTyxFQUFQLEVBQVdRLE1BQU1GLFdBQWpCLEVBQThCQSxXQUE5QixDQUFQOztBQUU3QixNQUFNRyxVQUFVQyxLQUFLQyxLQUFMLENBQVdILE1BQU1GLFdBQWpCLENBQWhCO0FBQ0EsTUFBTU0sVUFBVUgsVUFBVSxDQUExQjtBQUNBLE1BQUlYLFVBQUo7O0FBRUEsT0FBSyxJQUFJZSxJQUFJLENBQWIsRUFBZ0JBLElBQUlQLFdBQXBCLEVBQWlDTyxLQUFLLENBQXRDLEVBQXlDO0FBQ3ZDZixRQUFJRSxPQUFPLEVBQVAsRUFBV1MsT0FBWCxFQUFvQkgsY0FBY08sQ0FBbEMsSUFBdUNiLE9BQU8sRUFBUCxFQUFXWSxPQUFYLEVBQW9CQyxDQUFwQixDQUEzQztBQUNBLFFBQUl2QixVQUFVTSxPQUFPRSxDQUFQLENBQVYsTUFBeUJVLEdBQTdCLEVBQWtDLE9BQU9WLENBQVA7QUFDbkM7O0FBRUQsU0FBT0EsQ0FBUDtBQUNELENBaEJEOztBQWtCQSxJQUFNZ0Isb0JBQW9CLFNBQXBCQSxpQkFBb0IsR0FBTTtBQUM5QixNQUFNdkIsU0FBUyxxQkFBZ0JGLEdBQWhCLENBQWY7QUFDQSxNQUFNMEIsMEJBQXdCeEIsTUFBOUI7QUFDQSxNQUFNeUIsU0FBU1gsV0FBV2QsTUFBWCxDQUFmO0FBQ0EsU0FBTyx1QkFBS3dCLFFBQUwsT0FBa0JDLE1BQWxCLENBQVA7QUFDRCxDQUxEOztrQkFPZTtBQUFBLFNBQU0sb0JBQUs1QixlQUFMLEVBQXNCMEIsaUJBQXRCLENBQU47QUFBQSxDIiwiZmlsZSI6ImJhbGFuY2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25zIH0gZnJvbSAnaGV4bGV0LXBhaXJzJztcclxuaW1wb3J0IGdhbWUgZnJvbSAnLi4vZ2FtZSc7XHJcbmltcG9ydCBnZXRSYW5kb21OdW1iZXIgZnJvbSAnLi4vdXRpbHMnO1xyXG5cclxuY29uc3QgZGVzY3JpcHRpb25HYW1lID0gJ0JhbGFuY2UgdGhlIGdpdmVuIG51bWJlci4nO1xyXG5jb25zdCBtYXggPSA1MDAwO1xyXG5cclxuY29uc3Qgc3VtRGlnaXRzID0gKG51bWJlcikgPT4ge1xyXG4gIGNvbnN0IHJlc3VsdCA9IFN0cmluZyhudW1iZXIpLnNwbGl0KCcnKS5tYXAoTnVtYmVyKS5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKTtcclxuICByZXR1cm4gcmVzdWx0O1xyXG59O1xyXG5cclxuY29uc3QgY29uY2F0ID0gKGVtcHR5U3RyaW5nLCBudW0sIGNvdW50KSA9PiB7XHJcbiAgbGV0IHN0ciA9IGVtcHR5U3RyaW5nO1xyXG5cclxuICBpZiAoY291bnQgPiAwKSB7XHJcbiAgICBzdHIgKz0gbnVtO1xyXG4gICAgcmV0dXJuIGNvbmNhdChzdHIsIG51bSwgY291bnQgLSAxKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBzdHI7XHJcbn07XHJcblxyXG5jb25zdCBnZXRCYWxhbmNlID0gKG51bWJlcikgPT4ge1xyXG4gIGNvbnN0IGNvdW50RGlnaXRzID0gU3RyaW5nKG51bWJlcikubGVuZ3RoO1xyXG4gIGNvbnN0IHN1bSA9IHN1bURpZ2l0cyhudW1iZXIpO1xyXG5cclxuICBpZiAoc3VtICUgY291bnREaWdpdHMgPT09IDApIHJldHVybiBjb25jYXQoJycsIHN1bSAvIGNvdW50RGlnaXRzLCBjb3VudERpZ2l0cyk7XHJcblxyXG4gIGNvbnN0IG51bWJlcjEgPSBNYXRoLmZsb29yKHN1bSAvIGNvdW50RGlnaXRzKTtcclxuICBjb25zdCBudW1iZXIyID0gbnVtYmVyMSArIDE7XHJcbiAgbGV0IGE7XHJcblxyXG4gIGZvciAobGV0IGkgPSAxOyBpIDwgY291bnREaWdpdHM7IGkgKz0gMSkge1xyXG4gICAgYSA9IGNvbmNhdCgnJywgbnVtYmVyMSwgY291bnREaWdpdHMgLSBpKSArIGNvbmNhdCgnJywgbnVtYmVyMiwgaSk7XHJcbiAgICBpZiAoc3VtRGlnaXRzKE51bWJlcihhKSkgPT09IHN1bSkgcmV0dXJuIGE7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gYTtcclxufTtcclxuXHJcbmNvbnN0IHF1ZXN0aW9uQW5kQW5zd2VyID0gKCkgPT4ge1xyXG4gIGNvbnN0IG51bWJlciA9IGdldFJhbmRvbU51bWJlcihtYXgpO1xyXG4gIGNvbnN0IHF1ZXN0aW9uID0gYFF1ZXN0aW9uOiAke251bWJlcn1gO1xyXG4gIGNvbnN0IGFuc3dlciA9IGdldEJhbGFuY2UobnVtYmVyKTtcclxuICByZXR1cm4gY29ucyhxdWVzdGlvbiwgYCR7YW5zd2VyfWApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgKCkgPT4gZ2FtZShkZXNjcmlwdGlvbkdhbWUsIHF1ZXN0aW9uQW5kQW5zd2VyKTtcclxuIl19