mr-bmv/project-lvl1-s160

View on GitHub
src/games/gcd.js

Summary

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

export const generatePair = () => {
  const varNumber1 = Math.ceil(Math.random() * 100);
  const varNumber2 = Math.ceil(Math.random() * 100);

  const smaller = varNumber1 > varNumber2 ? varNumber2 : varNumber1;
  const bigger = varNumber1 > varNumber2 ? varNumber1 : varNumber2;

  const iter = (num, counter) => {
    let newGcd = num;
    if (counter > smaller) {
      return num;
    }

    if (smaller % counter === 0 && bigger % counter === 0) {
      newGcd = counter;
    }

    return iter(newGcd, counter + 1);
  };

  const gcd = iter(1, 1);

  const quetionText = `${varNumber1}  ${varNumber2}`;

  const correctAnswer = String(gcd);
  return cons(quetionText, correctAnswer);
};

export default () => {
  const getPair = () => generatePair();
  const rules = 'Find the greatest common divisor of given numbers.\n';
  play(getPair, rules);
};