mishalisovskiy/project-lvl1-s438

View on GitHub
src/games/progression.js

Summary

Maintainability
A
0 mins
Test Coverage
import buildGame from '..';
import { getNumber } from '../utils';
import * as _ from 'lodash';

const gameTask = 'What number is missing in the progression?';
const targetLengthOfArray = 10;

const playProgression = () => {
  const numToAdd = getNumber(0, 20);
  const startingPoint = getNumber(0, 100);

  const progressiveArray = () => {
    const createAnArray = (counter, processedArray) => {
      if (counter === targetLengthOfArray) {
        return processedArray;
      }
      return createAnArray(counter + 1,
        processedArray.concat(startingPoint + (numToAdd * counter)));
    };
    return createAnArray(1, [startingPoint]);
  };

  const arrayToEvaluate = progressiveArray();
  const arrayToString = arrayToEvaluate.join(' ');
  const replacedItemInArray = _.sample(arrayToEvaluate);
  const question = _.replace([arrayToString], replacedItemInArray, '..');
  const answer = String(replacedItemInArray);

  return { question, answer };
};

export default () => buildGame(playProgression, gameTask);