UNPKG

brain-games-irastypain

Version:

This package is implementation of first project at Hexlet

91 lines (73 loc) 8.85 kB
'use strict'; 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==