mr-bmv/project-lvl1-s160

View on GitHub
src/games/balance.js

Summary

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

const generatePair = () => {
  const varNumber = Math.ceil(Math.random() * 1000);
  const varNumberStr = String(varNumber);
  const varNumberArray = varNumberStr.split('').map(digit => Number(digit));
  const lengthOfNum = varNumberStr.length;

  const getBalance = (arr) => {
    const newArr = arr.slice().sort();
    const diff = newArr[lengthOfNum - 1] - newArr[0];
    if (diff > 1) {
      newArr[lengthOfNum - 1] -= 1;
      newArr[0] += 1;
    } else {
      return newArr;
    }
    return getBalance(newArr);
  };

  const balanceArray = getBalance(varNumberArray);
  const correctAnswer = balanceArray.join('');

  return cons(varNumber, correctAnswer);
};

export default () => {
  const getPair = () => generatePair();
  const rules = 'Balance the given number.';
  play(getPair, rules);
};