xxphantom/backend-project-lvl1

View on GitHub
src/games/progression.js

Summary

Maintainability
A
0 mins
Test Coverage
import runGameFlow from '../index.js';
import random from '../utils.js';

const gameTask = 'What number is missing in the progression?';
const progressionLength = 10;
const progressionMaxStep = 9;
const progressionMaxFirstItem = 15;

const generateProgression = (firstItem, step, length) => Array(length)
  .fill(null)
  .map((item, i) => firstItem + (step * i));

const getGameData = () => {
  const step = random(1, progressionMaxStep);
  const firstItem = random(1, progressionMaxFirstItem);
  const hiddenItemIndex = random(0, progressionLength - 1);
  const progression = generateProgression(firstItem, step, progressionLength);

  const answer = progression[hiddenItemIndex].toString();
  progression[hiddenItemIndex] = '..';
  const question = progression.join(' ');

  return [question, answer];
};

export default () => {
  runGameFlow(gameTask, getGameData);
};