ayubov/project-lvl1-s128

View on GitHub
src/games/balance.js

Summary

Maintainability
A
2 hrs
Test Coverage
import playGame from '..';
import getRandomNumber from '../utils';

const balance = (number) => {
  const arrOfDigits = String(number).split('').map(e => Number(e));
  const getBalance = (arr) => {
    const sortedArr = arr.slice().sort((a, b) => a - b);
    if (sortedArr[sortedArr.length - 1] - sortedArr[0] < 2) {
      return sortedArr.join('');
    }
    const newArr = [sortedArr[0] + 1, ...sortedArr.slice(1, -1), sortedArr.slice(-1)[0] - 1];
    return getBalance(newArr);
  };
  return getBalance(arrOfDigits);
};
const task = 'Balance the given number.';

export default () => {
  const gameData = () => {
    const num = getRandomNumber(10000);
    const question = `${num}`;
    const correctAnswer = String(balance(num));
    return { question, correctAnswer };
  };
  return playGame(gameData, task);
};