Kokchix/project-lvl1-s292

View on GitHub
src/games/balance.js

Summary

Maintainability
A
0 mins
Test Coverage
import { cons } from 'hexlet-pairs';
import gameProcess from '..';
import generateNumber from '../utils';

const gameDescription = 'Balance the given number.';

const balancedNumber = (value) => {
  const arrOfNumber = value.toString().split('').map(item => Number(item));
  const lenArrOfNumber = arrOfNumber.length;
  const sumArrOfNumber = arrOfNumber.reduce((sum, item) => sum + item, 0);
  const iter = (acc, sum, len) => {
    if (len === 0) {
      return Number(acc.join(''));
    }
    return iter([...acc, Math.floor(sum / len)], sum - Math.floor(sum / len), len - 1);
  };
  return iter([], sumArrOfNumber, lenArrOfNumber);
};

const gameBalance = () => {
  const num1 = generateNumber(10, 100);
  const correctAnswer = balancedNumber(num1);
  const question = `${num1}`;
  const gameData = cons(question, correctAnswer.toString());
  return gameData;
};

export default () => gameProcess(gameBalance, gameDescription);