UNPKG

uladzislau97-brain-games

Version:

Set of console mini-games.

55 lines (45 loc) 6.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _gameEngine = _interopRequireDefault(require("./game-engine")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const INCLUDED_MIN_RANDOM_NUMBER = 1; const EXCLUDED_MAX_RANDOM_NUMBER = 101; const INCLUDED_MIN_RANDOM_INDEX = 0; const EXCLUDED_MAX_RANDOM_INDEX = 3; const RADIX = 10; const GAME_DESCRIPTION = 'What is the result of the expression?'; const arithmeticSigns = ['+', '-', '*']; const arithmeticOperations = { '+': { perform: (firstNumber, secondNumber) => firstNumber + secondNumber }, '-': { perform: (firstNumber, secondNumber) => firstNumber - secondNumber }, '*': { perform: (firstNumber, secondNumber) => firstNumber * secondNumber } }; const generateRandomNumber = (min, max) => Math.floor(Math.random() * (max - min) + min); const generateRandomArithmeticSign = () => { const randomIndex = generateRandomNumber(INCLUDED_MIN_RANDOM_INDEX, EXCLUDED_MAX_RANDOM_INDEX); return arithmeticSigns[randomIndex]; }; const generateQuestion = () => { const firstNumber = generateRandomNumber(INCLUDED_MIN_RANDOM_NUMBER, EXCLUDED_MAX_RANDOM_NUMBER); const secondNumber = generateRandomNumber(INCLUDED_MIN_RANDOM_NUMBER, EXCLUDED_MAX_RANDOM_NUMBER); const sign = generateRandomArithmeticSign(); return `${firstNumber} ${sign} ${secondNumber}`; }; const getCorrectAnswer = question => { const [firstNumber, sign, secondNumber] = question.split(' '); return arithmeticOperations[sign].perform(parseInt(firstNumber, RADIX), parseInt(secondNumber, RADIX)).toString(); }; var _default = () => { (0, _gameEngine.default)(GAME_DESCRIPTION, generateQuestion, getCorrectAnswer); }; exports.default = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nYW1lcy9icmFpbi1jYWxjLmpzIl0sIm5hbWVzIjpbIklOQ0xVREVEX01JTl9SQU5ET01fTlVNQkVSIiwiRVhDTFVERURfTUFYX1JBTkRPTV9OVU1CRVIiLCJJTkNMVURFRF9NSU5fUkFORE9NX0lOREVYIiwiRVhDTFVERURfTUFYX1JBTkRPTV9JTkRFWCIsIlJBRElYIiwiR0FNRV9ERVNDUklQVElPTiIsImFyaXRobWV0aWNTaWducyIsImFyaXRobWV0aWNPcGVyYXRpb25zIiwicGVyZm9ybSIsImZpcnN0TnVtYmVyIiwic2Vjb25kTnVtYmVyIiwiZ2VuZXJhdGVSYW5kb21OdW1iZXIiLCJtaW4iLCJtYXgiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJnZW5lcmF0ZVJhbmRvbUFyaXRobWV0aWNTaWduIiwicmFuZG9tSW5kZXgiLCJnZW5lcmF0ZVF1ZXN0aW9uIiwic2lnbiIsImdldENvcnJlY3RBbnN3ZXIiLCJxdWVzdGlvbiIsInNwbGl0IiwicGFyc2VJbnQiLCJ0b1N0cmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRUEsTUFBTUEsMEJBQTBCLEdBQUcsQ0FBbkM7QUFDQSxNQUFNQywwQkFBMEIsR0FBRyxHQUFuQztBQUNBLE1BQU1DLHlCQUF5QixHQUFHLENBQWxDO0FBQ0EsTUFBTUMseUJBQXlCLEdBQUcsQ0FBbEM7QUFDQSxNQUFNQyxLQUFLLEdBQUcsRUFBZDtBQUNBLE1BQU1DLGdCQUFnQixHQUFHLHVDQUF6QjtBQUVBLE1BQU1DLGVBQWUsR0FBRyxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsR0FBWCxDQUF4QjtBQUNBLE1BQU1DLG9CQUFvQixHQUFHO0FBQzNCLE9BQUs7QUFDSEMsSUFBQUEsT0FBTyxFQUFFLENBQUNDLFdBQUQsRUFBY0MsWUFBZCxLQUErQkQsV0FBVyxHQUFHQztBQURuRCxHQURzQjtBQUkzQixPQUFLO0FBQ0hGLElBQUFBLE9BQU8sRUFBRSxDQUFDQyxXQUFELEVBQWNDLFlBQWQsS0FBK0JELFdBQVcsR0FBR0M7QUFEbkQsR0FKc0I7QUFPM0IsT0FBSztBQUNIRixJQUFBQSxPQUFPLEVBQUUsQ0FBQ0MsV0FBRCxFQUFjQyxZQUFkLEtBQStCRCxXQUFXLEdBQUdDO0FBRG5EO0FBUHNCLENBQTdCOztBQVlBLE1BQU1DLG9CQUFvQixHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjQyxJQUFJLENBQUNDLEtBQUwsQ0FDekNELElBQUksQ0FBQ0UsTUFBTCxNQUFpQkgsR0FBRyxHQUFHRCxHQUF2QixJQUE4QkEsR0FEVyxDQUEzQzs7QUFJQSxNQUFNSyw0QkFBNEIsR0FBRyxNQUFNO0FBQ3pDLFFBQU1DLFdBQVcsR0FBR1Asb0JBQW9CLENBQ3RDVCx5QkFEc0MsRUFDWEMseUJBRFcsQ0FBeEM7QUFHQSxTQUFPRyxlQUFlLENBQUNZLFdBQUQsQ0FBdEI7QUFDRCxDQUxEOztBQU9BLE1BQU1DLGdCQUFnQixHQUFHLE1BQU07QUFDN0IsUUFBTVYsV0FBVyxHQUFHRSxvQkFBb0IsQ0FDdENYLDBCQURzQyxFQUNWQywwQkFEVSxDQUF4QztBQUdBLFFBQU1TLFlBQVksR0FBR0Msb0JBQW9CLENBQ3ZDWCwwQkFEdUMsRUFDWEMsMEJBRFcsQ0FBekM7QUFHQSxRQUFNbUIsSUFBSSxHQUFHSCw0QkFBNEIsRUFBekM7QUFDQSxTQUFRLEdBQUVSLFdBQVksSUFBR1csSUFBSyxJQUFHVixZQUFhLEVBQTlDO0FBQ0QsQ0FURDs7QUFXQSxNQUFNVyxnQkFBZ0IsR0FBSUMsUUFBRCxJQUFjO0FBQ3JDLFFBQU0sQ0FBQ2IsV0FBRCxFQUFjVyxJQUFkLEVBQW9CVixZQUFwQixJQUFvQ1ksUUFBUSxDQUFDQyxLQUFULENBQWUsR0FBZixDQUExQztBQUNBLFNBQU9oQixvQkFBb0IsQ0FBQ2EsSUFBRCxDQUFwQixDQUEyQlosT0FBM0IsQ0FDTGdCLFFBQVEsQ0FBQ2YsV0FBRCxFQUFjTCxLQUFkLENBREgsRUFFTG9CLFFBQVEsQ0FBQ2QsWUFBRCxFQUFlTixLQUFmLENBRkgsRUFHTHFCLFFBSEssRUFBUDtBQUlELENBTkQ7O2VBUWUsTUFBTTtBQUNuQiwyQkFBUXBCLGdCQUFSLEVBQTBCYyxnQkFBMUIsRUFBNENFLGdCQUE1QztBQUNELEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcnVuR2FtZSBmcm9tICcuL2dhbWUtZW5naW5lJztcblxuY29uc3QgSU5DTFVERURfTUlOX1JBTkRPTV9OVU1CRVIgPSAxO1xuY29uc3QgRVhDTFVERURfTUFYX1JBTkRPTV9OVU1CRVIgPSAxMDE7XG5jb25zdCBJTkNMVURFRF9NSU5fUkFORE9NX0lOREVYID0gMDtcbmNvbnN0IEVYQ0xVREVEX01BWF9SQU5ET01fSU5ERVggPSAzO1xuY29uc3QgUkFESVggPSAxMDtcbmNvbnN0IEdBTUVfREVTQ1JJUFRJT04gPSAnV2hhdCBpcyB0aGUgcmVzdWx0IG9mIHRoZSBleHByZXNzaW9uPyc7XG5cbmNvbnN0IGFyaXRobWV0aWNTaWducyA9IFsnKycsICctJywgJyonXTtcbmNvbnN0IGFyaXRobWV0aWNPcGVyYXRpb25zID0ge1xuICAnKyc6IHtcbiAgICBwZXJmb3JtOiAoZmlyc3ROdW1iZXIsIHNlY29uZE51bWJlcikgPT4gZmlyc3ROdW1iZXIgKyBzZWNvbmROdW1iZXIsXG4gIH0sXG4gICctJzoge1xuICAgIHBlcmZvcm06IChmaXJzdE51bWJlciwgc2Vjb25kTnVtYmVyKSA9PiBmaXJzdE51bWJlciAtIHNlY29uZE51bWJlcixcbiAgfSxcbiAgJyonOiB7XG4gICAgcGVyZm9ybTogKGZpcnN0TnVtYmVyLCBzZWNvbmROdW1iZXIpID0+IGZpcnN0TnVtYmVyICogc2Vjb25kTnVtYmVyLFxuICB9LFxufTtcblxuY29uc3QgZ2VuZXJhdGVSYW5kb21OdW1iZXIgPSAobWluLCBtYXgpID0+IE1hdGguZmxvb3IoXG4gIE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSArIG1pbixcbik7XG5cbmNvbnN0IGdlbmVyYXRlUmFuZG9tQXJpdGhtZXRpY1NpZ24gPSAoKSA9PiB7XG4gIGNvbnN0IHJhbmRvbUluZGV4ID0gZ2VuZXJhdGVSYW5kb21OdW1iZXIoXG4gICAgSU5DTFVERURfTUlOX1JBTkRPTV9JTkRFWCwgRVhDTFVERURfTUFYX1JBTkRPTV9JTkRFWCxcbiAgKTtcbiAgcmV0dXJuIGFyaXRobWV0aWNTaWduc1tyYW5kb21JbmRleF07XG59O1xuXG5jb25zdCBnZW5lcmF0ZVF1ZXN0aW9uID0gKCkgPT4ge1xuICBjb25zdCBmaXJzdE51bWJlciA9IGdlbmVyYXRlUmFuZG9tTnVtYmVyKFxuICAgIElOQ0xVREVEX01JTl9SQU5ET01fTlVNQkVSLCBFWENMVURFRF9NQVhfUkFORE9NX05VTUJFUixcbiAgKTtcbiAgY29uc3Qgc2Vjb25kTnVtYmVyID0gZ2VuZXJhdGVSYW5kb21OdW1iZXIoXG4gICAgSU5DTFVERURfTUlOX1JBTkRPTV9OVU1CRVIsIEVYQ0xVREVEX01BWF9SQU5ET01fTlVNQkVSLFxuICApO1xuICBjb25zdCBzaWduID0gZ2VuZXJhdGVSYW5kb21Bcml0aG1ldGljU2lnbigpO1xuICByZXR1cm4gYCR7Zmlyc3ROdW1iZXJ9ICR7c2lnbn0gJHtzZWNvbmROdW1iZXJ9YDtcbn07XG5cbmNvbnN0IGdldENvcnJlY3RBbnN3ZXIgPSAocXVlc3Rpb24pID0+IHtcbiAgY29uc3QgW2ZpcnN0TnVtYmVyLCBzaWduLCBzZWNvbmROdW1iZXJdID0gcXVlc3Rpb24uc3BsaXQoJyAnKTtcbiAgcmV0dXJuIGFyaXRobWV0aWNPcGVyYXRpb25zW3NpZ25dLnBlcmZvcm0oXG4gICAgcGFyc2VJbnQoZmlyc3ROdW1iZXIsIFJBRElYKSxcbiAgICBwYXJzZUludChzZWNvbmROdW1iZXIsIFJBRElYKSxcbiAgKS50b1N0cmluZygpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgKCkgPT4ge1xuICBydW5HYW1lKEdBTUVfREVTQ1JJUFRJT04sIGdlbmVyYXRlUXVlc3Rpb24sIGdldENvcnJlY3RBbnN3ZXIpO1xufTtcbiJdfQ==