hexlet-project-lvl1-german
Version:
Project1 from hexlet. Brain Games.
47 lines (37 loc) • 4.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _util = require('../util');
var _util2 = _interopRequireDefault(_util);
var _ = require('..');
var _2 = _interopRequireDefault(_);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var minNumber = 100;
var maxNumber = 1000;
var description = 'Balance the given number.';
var getBalancedNumber = function getBalancedNumber(number) {
var digits = number.toString().split('').map(Number);
var sum = digits.reduce(function (acc, digit) {
return digit + acc;
}, 0);
var digitsCount = digits.length;
var big = Math.ceil(sum / digitsCount);
var bigCount = sum - digitsCount * (big - 1);
var newDigits = [];
for (var i = 0; i < digitsCount; i += 1) {
newDigits.unshift(i < bigCount ? big : big - 1);
}
return newDigits.reduce(function (el, acc) {
return '' + el + acc;
}, '');
};
var generateAnswerAndQuestion = function generateAnswerAndQuestion() {
var question = (0, _util2.default)(minNumber, maxNumber);
var answer = getBalancedNumber(question);
return { question: question, answer: answer };
};
exports.default = function () {
return (0, _2.default)(description, generateAnswerAndQuestion);
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nYW1lcy9iYWxhbmNlLmpzIl0sIm5hbWVzIjpbIm1pbk51bWJlciIsIm1heE51bWJlciIsImRlc2NyaXB0aW9uIiwiZ2V0QmFsYW5jZWROdW1iZXIiLCJudW1iZXIiLCJkaWdpdHMiLCJ0b1N0cmluZyIsInNwbGl0IiwibWFwIiwiTnVtYmVyIiwic3VtIiwicmVkdWNlIiwiYWNjIiwiZGlnaXQiLCJkaWdpdHNDb3VudCIsImxlbmd0aCIsImJpZyIsIk1hdGgiLCJjZWlsIiwiYmlnQ291bnQiLCJuZXdEaWdpdHMiLCJpIiwidW5zaGlmdCIsImVsIiwiZ2VuZXJhdGVBbnN3ZXJBbmRRdWVzdGlvbiIsInF1ZXN0aW9uIiwiYW5zd2VyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztBQUNBOzs7Ozs7QUFFQSxJQUFNQSxZQUFZLEdBQWxCO0FBQ0EsSUFBTUMsWUFBWSxJQUFsQjtBQUNBLElBQU1DLGNBQWMsMkJBQXBCOztBQUVBLElBQU1DLG9CQUFvQixTQUFwQkEsaUJBQW9CLENBQUNDLE1BQUQsRUFBWTtBQUNwQyxNQUFNQyxTQUFTRCxPQUFPRSxRQUFQLEdBQWtCQyxLQUFsQixDQUF3QixFQUF4QixFQUE0QkMsR0FBNUIsQ0FBZ0NDLE1BQWhDLENBQWY7QUFDQSxNQUFNQyxNQUFNTCxPQUFPTSxNQUFQLENBQWMsVUFBQ0MsR0FBRCxFQUFNQyxLQUFOO0FBQUEsV0FBZ0JBLFFBQVFELEdBQXhCO0FBQUEsR0FBZCxFQUEyQyxDQUEzQyxDQUFaO0FBQ0EsTUFBTUUsY0FBY1QsT0FBT1UsTUFBM0I7QUFDQSxNQUFNQyxNQUFNQyxLQUFLQyxJQUFMLENBQVVSLE1BQU1JLFdBQWhCLENBQVo7QUFDQSxNQUFNSyxXQUFXVCxNQUFNSSxlQUFlRSxNQUFNLENBQXJCLENBQXZCO0FBQ0EsTUFBTUksWUFBWSxFQUFsQjtBQUNBLE9BQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJUCxXQUFwQixFQUFpQ08sS0FBSyxDQUF0QyxFQUF5QztBQUN2Q0QsY0FBVUUsT0FBVixDQUFrQkQsSUFBSUYsUUFBSixHQUFlSCxHQUFmLEdBQXFCQSxNQUFNLENBQTdDO0FBQ0Q7QUFDRCxTQUFPSSxVQUFVVCxNQUFWLENBQWlCLFVBQUNZLEVBQUQsRUFBS1gsR0FBTDtBQUFBLGdCQUFnQlcsRUFBaEIsR0FBcUJYLEdBQXJCO0FBQUEsR0FBakIsRUFBNkMsRUFBN0MsQ0FBUDtBQUNELENBWEQ7O0FBYUEsSUFBTVksNEJBQTRCLFNBQTVCQSx5QkFBNEIsR0FBTTtBQUN0QyxNQUFNQyxXQUFXLG9CQUFhekIsU0FBYixFQUF3QkMsU0FBeEIsQ0FBakI7QUFDQSxNQUFNeUIsU0FBU3ZCLGtCQUFrQnNCLFFBQWxCLENBQWY7QUFDQSxTQUFPLEVBQUVBLGtCQUFGLEVBQVlDLGNBQVosRUFBUDtBQUNELENBSkQ7O2tCQU1lO0FBQUEsU0FBTSxnQkFBWXhCLFdBQVosRUFBeUJzQix5QkFBekIsQ0FBTjtBQUFBLEMiLCJmaWxlIjoiYmFsYW5jZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRSYW5kb21JbnQgZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgZ2FtZVByb2Nlc3MgZnJvbSAnLi4nO1xuXG5jb25zdCBtaW5OdW1iZXIgPSAxMDA7XG5jb25zdCBtYXhOdW1iZXIgPSAxMDAwO1xuY29uc3QgZGVzY3JpcHRpb24gPSAnQmFsYW5jZSB0aGUgZ2l2ZW4gbnVtYmVyLic7XG5cbmNvbnN0IGdldEJhbGFuY2VkTnVtYmVyID0gKG51bWJlcikgPT4ge1xuICBjb25zdCBkaWdpdHMgPSBudW1iZXIudG9TdHJpbmcoKS5zcGxpdCgnJykubWFwKE51bWJlcik7XG4gIGNvbnN0IHN1bSA9IGRpZ2l0cy5yZWR1Y2UoKGFjYywgZGlnaXQpID0+IGRpZ2l0ICsgYWNjLCAwKTtcbiAgY29uc3QgZGlnaXRzQ291bnQgPSBkaWdpdHMubGVuZ3RoO1xuICBjb25zdCBiaWcgPSBNYXRoLmNlaWwoc3VtIC8gZGlnaXRzQ291bnQpO1xuICBjb25zdCBiaWdDb3VudCA9IHN1bSAtIGRpZ2l0c0NvdW50ICogKGJpZyAtIDEpO1xuICBjb25zdCBuZXdEaWdpdHMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWdpdHNDb3VudDsgaSArPSAxKSB7XG4gICAgbmV3RGlnaXRzLnVuc2hpZnQoaSA8IGJpZ0NvdW50ID8gYmlnIDogYmlnIC0gMSk7XG4gIH1cbiAgcmV0dXJuIG5ld0RpZ2l0cy5yZWR1Y2UoKGVsLCBhY2MpID0+IGAke2VsfSR7YWNjfWAsICcnKTtcbn07XG5cbmNvbnN0IGdlbmVyYXRlQW5zd2VyQW5kUXVlc3Rpb24gPSAoKSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uID0gZ2V0UmFuZG9tSW50KG1pbk51bWJlciwgbWF4TnVtYmVyKTtcbiAgY29uc3QgYW5zd2VyID0gZ2V0QmFsYW5jZWROdW1iZXIocXVlc3Rpb24pO1xuICByZXR1cm4geyBxdWVzdGlvbiwgYW5zd2VyIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCAoKSA9PiBnYW1lUHJvY2VzcyhkZXNjcmlwdGlvbiwgZ2VuZXJhdGVBbnN3ZXJBbmRRdWVzdGlvbik7XG4iXX0=