mr-bmv/project-lvl1-s160

View on GitHub
src/games/progression.js

Summary

Maintainability
A
0 mins
Test Coverage
import { cons } from 'hexlet-pairs';
import play from '..';

const generatePair = () => {
  const varNumber1 = Math.ceil(Math.random() * 10);
  const progressionNumber = Math.ceil(Math.random() * 5);
  const hideNumber = Math.ceil(Math.random() * 10);

  let newNumber;
  const iter = (progressionLine, counter) => {
    if (counter === 10) {
      return progressionLine;
    }

    if (counter === hideNumber) {
      newNumber = '..';
    } else {
      const counterForNumber = (counter - 1) * progressionNumber;
      newNumber = varNumber1 + counterForNumber;
    }

    const newLine = `${progressionLine}  ${newNumber}`;
    const newCounter = counter + 1;
    return iter(newLine, newCounter);
  };

  const line = iter(varNumber1, 2);
  const progressionNumberRait = (hideNumber - 1) * progressionNumber;
  const correctAnswer = String(varNumber1 + progressionNumberRait);

  return cons(line, correctAnswer);
};

export default () => {
  const getPair = () => generatePair();
  const rules = 'What number is missing in this progression?';
  play(getPair, rules);
};