TyrionFront/Brain-games

View on GitHub
src/games/makeBalance.js

Summary

Maintainability
A
0 mins
Test Coverage
import makeGame from '../gameEngine';
import getRandomNum from '../utils';

const description = 'Balance the given number.';

const makeBalance = (number) => {
  const numsInNumber = String(number).split('');
  const numsInNumberSum = numsInNumber.reduce((acc, num) => acc + Number(num), 0);
  const remainder = numsInNumberSum % numsInNumber.length;
  const avgNum = (numsInNumberSum - remainder) / numsInNumber.length;
  const numFromAvgNums = numsInNumber.map(() => avgNum);

  const balancedNum = numFromAvgNums.reduce((acc, num, i) => {
    const newNum = remainder > i ? num + 1 : num;
    return newNum + acc;
  }, '');
  return balancedNum;
};

const startLimit = 10;
const endLimit = 10000;

const makeQuestionAnswer = () => {
  const question = getRandomNum(startLimit, endLimit);
  return [question, makeBalance(question)];
};

export default gamerName => makeGame(description, makeQuestionAnswer, gamerName);