brain-games-irastypain
Version:
This package is implementation of first project at Hexlet
91 lines (73 loc) • 8.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isPrime = exports.smallestDivisor = exports.genArithmeticProgression = exports.balanceInt = exports.gcd = exports.getRandomOperation = exports.getRandomInt = undefined;
var _hexletPairs = require('hexlet-pairs');
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 getRandomInt = exports.getRandomInt = function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
};
var getRandomOperation = exports.getRandomOperation = function getRandomOperation() {
var operations = [(0, _hexletPairs.cons)('+', function (a, b) {
return a + b;
}), (0, _hexletPairs.cons)('-', function (a, b) {
return a - b;
}), (0, _hexletPairs.cons)('*', function (a, b) {
return a * b;
})];
var index = getRandomInt(0, operations.length);
return operations[index];
};
var gcd = exports.gcd = function gcd(a, b) {
if (b === 0) {
return a;
}
return gcd(b, a % b);
};
var balanceInt = exports.balanceInt = function balanceInt(number) {
var iter = function iter(acc, sumDigits, countDigits) {
if (countDigits === 0) {
return acc;
}
var newDigit = Math.trunc(sumDigits / countDigits);
return iter([].concat(_toConsumableArray(acc), [newDigit]), sumDigits - newDigit, countDigits - 1);
};
var digits = Array.from(String(number), Number);
var sumDigits = digits.reduce(function (sum, digit) {
return sum + digit;
}, 0);
return iter([], sumDigits, digits.length).join('');
};
var genArithmeticProgression = exports.genArithmeticProgression = function genArithmeticProgression(a, d, countItems) {
var iter = function iter(progression, n) {
if (n > countItems) {
return progression;
}
var nextItem = a + (n - 1) * d;
return iter([].concat(_toConsumableArray(progression), [nextItem]), n + 1);
};
return iter([], 1);
};
var smallestDivisor = exports.smallestDivisor = function smallestDivisor(number) {
var nextDivisor = function nextDivisor(divisor) {
if (divisor === 2) {
return 3;
}
return divisor + 2;
};
var findDivisor = function findDivisor(testDivisor) {
if (Math.pow(testDivisor, 2) > number) {
return number;
} else if (number % testDivisor === 0) {
return testDivisor;
}
return findDivisor(nextDivisor(testDivisor));
};
var startDivisor = 2;
return findDivisor(startDivisor);
};
var isPrime = exports.isPrime = function isPrime(number) {
return number === smallestDivisor(number);
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbWF0aC5qcyJdLCJuYW1lcyI6WyJnZXRSYW5kb21JbnQiLCJtaW4iLCJtYXgiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJnZXRSYW5kb21PcGVyYXRpb24iLCJvcGVyYXRpb25zIiwiYSIsImIiLCJpbmRleCIsImxlbmd0aCIsImdjZCIsImJhbGFuY2VJbnQiLCJudW1iZXIiLCJpdGVyIiwiYWNjIiwic3VtRGlnaXRzIiwiY291bnREaWdpdHMiLCJuZXdEaWdpdCIsInRydW5jIiwiZGlnaXRzIiwiQXJyYXkiLCJmcm9tIiwiU3RyaW5nIiwiTnVtYmVyIiwicmVkdWNlIiwic3VtIiwiZGlnaXQiLCJqb2luIiwiZ2VuQXJpdGhtZXRpY1Byb2dyZXNzaW9uIiwiZCIsImNvdW50SXRlbXMiLCJwcm9ncmVzc2lvbiIsIm4iLCJuZXh0SXRlbSIsInNtYWxsZXN0RGl2aXNvciIsIm5leHREaXZpc29yIiwiZGl2aXNvciIsImZpbmREaXZpc29yIiwidGVzdERpdmlzb3IiLCJzdGFydERpdmlzb3IiLCJpc1ByaW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFFTyxJQUFNQSxzQ0FBZSxTQUFmQSxZQUFlLENBQUNDLEdBQUQsRUFBTUMsR0FBTjtBQUFBLFNBQWNDLEtBQUtDLEtBQUwsQ0FBV0QsS0FBS0UsTUFBTCxNQUFpQkgsTUFBTUQsR0FBdkIsQ0FBWCxJQUEwQ0EsR0FBeEQ7QUFBQSxDQUFyQjs7QUFFQSxJQUFNSyxrREFBcUIsU0FBckJBLGtCQUFxQixHQUFNO0FBQ3RDLE1BQU1DLGFBQWEsQ0FDakIsdUJBQUssR0FBTCxFQUFVLFVBQUNDLENBQUQsRUFBSUMsQ0FBSjtBQUFBLFdBQVVELElBQUlDLENBQWQ7QUFBQSxHQUFWLENBRGlCLEVBRWpCLHVCQUFLLEdBQUwsRUFBVSxVQUFDRCxDQUFELEVBQUlDLENBQUo7QUFBQSxXQUFVRCxJQUFJQyxDQUFkO0FBQUEsR0FBVixDQUZpQixFQUdqQix1QkFBSyxHQUFMLEVBQVUs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IiwiZmlsZSI6Im1hdGguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25zIH0gZnJvbSAnaGV4bGV0LXBhaXJzJztcblxuZXhwb3J0IGNvbnN0IGdldFJhbmRvbUludCA9IChtaW4sIG1heCkgPT4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWluO1xuXG5leHBvcnQgY29uc3QgZ2V0UmFuZG9tT3BlcmF0aW9uID0gKCkgPT4ge1xuICBjb25zdCBvcGVyYXRpb25zID0gW1xuICAgIGNvbnMoJysnLCAoYSwgYikgPT4gYSArIGIpLFxuICAgIGNvbnMoJy0nLCAoYSwgYikgPT4gYSAtIGIpLFxuICAgIGNvbnMoJyonLCAoYSwgYikgPT4gYSAqIGIpLFxuICBdO1xuICBjb25zdCBpbmRleCA9IGdldFJhbmRvbUludCgwLCBvcGVyYXRpb25zLmxlbmd0aCk7XG5cbiAgcmV0dXJuIG9wZXJhdGlvbnNbaW5kZXhdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdjZCA9IChhLCBiKSA9PiB7XG4gIGlmIChiID09PSAwKSB7XG4gICAgcmV0dXJuIGE7XG4gIH1cblxuICByZXR1cm4gZ2NkKGIsIGEgJSBiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBiYWxhbmNlSW50ID0gKG51bWJlcikgPT4ge1xuICBjb25zdCBpdGVyID0gKGFjYywgc3VtRGlnaXRzLCBjb3VudERpZ2l0cykgPT4ge1xuICAgIGlmIChjb3VudERpZ2l0cyA9PT0gMCkge1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9XG4gICAgY29uc3QgbmV3RGlnaXQgPSBNYXRoLnRydW5jKHN1bURpZ2l0cyAvIGNvdW50RGlnaXRzKTtcbiAgICByZXR1cm4gaXRlcihbLi4uYWNjLCBuZXdEaWdpdF0sIHN1bURpZ2l0cyAtIG5ld0RpZ2l0LCBjb3VudERpZ2l0cyAtIDEpO1xuICB9O1xuXG4gIGNvbnN0IGRpZ2l0cyA9IEFycmF5LmZyb20oU3RyaW5nKG51bWJlciksIE51bWJlcik7XG4gIGNvbnN0IHN1bURpZ2l0cyA9IGRpZ2l0cy5yZWR1Y2UoKHN1bSwgZGlnaXQpID0+IHN1bSArIGRpZ2l0LCAwKTtcblxuICByZXR1cm4gaXRlcihbXSwgc3VtRGlnaXRzLCBkaWdpdHMubGVuZ3RoKS5qb2luKCcnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZW5Bcml0aG1ldGljUHJvZ3Jlc3Npb24gPSAoYSwgZCwgY291bnRJdGVtcykgPT4ge1xuICBjb25zdCBpdGVyID0gKHByb2dyZXNzaW9uLCBuKSA9PiB7XG4gICAgaWYgKG4gPiBjb3VudEl0ZW1zKSB7XG4gICAgICByZXR1cm4gcHJvZ3Jlc3Npb247XG4gICAgfVxuICAgIGNvbnN0IG5leHRJdGVtID0gYSArICgobiAtIDEpICogZCk7XG4gICAgcmV0dXJuIGl0ZXIoWy4uLnByb2dyZXNzaW9uLCBuZXh0SXRlbV0sIG4gKyAxKTtcbiAgfTtcblxuICByZXR1cm4gaXRlcihbXSwgMSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc21hbGxlc3REaXZpc29yID0gKG51bWJlcikgPT4ge1xuICBjb25zdCBuZXh0RGl2aXNvciA9IChkaXZpc29yKSA9PiB7XG4gICAgaWYgKGRpdmlzb3IgPT09IDIpIHtcbiAgICAgIHJldHVybiAzO1xuICAgIH1cbiAgICByZXR1cm4gZGl2aXNvciArIDI7XG4gIH07XG5cbiAgY29uc3QgZmluZERpdmlzb3IgPSAodGVzdERpdmlzb3IpID0+IHtcbiAgICBpZiAoKHRlc3REaXZpc29yICoqIDIpID4gbnVtYmVyKSB7XG4gICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH0gZWxzZSBpZiAoKG51bWJlciAlIHRlc3REaXZpc29yKSA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRlc3REaXZpc29yO1xuICAgIH1cblxuICAgIHJldHVybiBmaW5kRGl2aXNvcihuZXh0RGl2aXNvcih0ZXN0RGl2aXNvcikpO1xuICB9O1xuXG4gIGNvbnN0IHN0YXJ0RGl2aXNvciA9IDI7XG4gIHJldHVybiBmaW5kRGl2aXNvcihzdGFydERpdmlzb3IpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUHJpbWUgPSBudW1iZXIgPT4gbnVtYmVyID09PSBzbWFsbGVzdERpdmlzb3IobnVtYmVyKTtcbiJdfQ==