mput/project-lvl1-s128

View on GitHub
src/games/progressionGame.js

Summary

Maintainability
A
25 mins
Test Coverage
import { cons } from 'hexlet-pairs';
import newGame from '..';
import randomInt from '../utils';

const description = 'What number is missing in this progression?';

const getQueAndAnsw = () => {
  const progElmsCount = 10;
  const skippedElmPos = randomInt(10) - 1;
  const firstElm = randomInt(10);
  const step = randomInt(5);

  const iterQnA = (currentElm, currentElmPos, progression, hiddenElm) => {
    if (currentElmPos === progElmsCount) {
      return cons(progression, hiddenElm);
    }
    const nextElm = currentElm + step;
    const nextElmPos = currentElmPos + 1;
    const separator = (currentElmPos === 0) ? '' : ' ';

    if (currentElmPos === skippedElmPos) {
      return iterQnA(nextElm, nextElmPos, `${progression}${separator}..`, String(currentElm));
    }
    return iterQnA(nextElm, nextElmPos, `${progression}${separator}${currentElm}`, hiddenElm);
  };

  return iterQnA(firstElm, 0, '', '');
};

export default () => newGame(description, getQueAndAnsw);