Erquilenne/project-lvl1-s360

View on GitHub
src/games/Balance.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace BrainGames\Balance;

use function BrainGames\logic\game;

const DESCRIPTION = 'Balance the given number.';

function run_balance()
{
    $getQuestionAndCorrectAnswer = function () {
        $integer = mt_rand(111, 9999);
        $question = $integer;
        $correctAnswer = calculateBalance($integer);
        return [$question, $correctAnswer];
    };
    game(DESCRIPTION, $getQuestionAndCorrectAnswer);
}

function calculateBalance($integer)
{
    $integerArray = str_split($integer);
    $size = sizeof($integerArray);
    $integerSumm = 0;
    for ($i = 0; $i < $size; $i++) {
        $integerSumm += $integerArray[$i];
    }
    $baseInteger = floor($integerSumm / $size);
    $remain = $integerSumm % $size;

    $balanceWithoutRemain = [];
    for ($i = 0; $i < $size; $i++) {
        $balanceWithoutRemain[] = $baseInteger;
    }
    if ($remain !== 0) {
        for ($i = 0; $i < $remain; $i++) {
            $balanceWithoutRemain[$i]++;
        }
    }
    $correctAnswer = implode('', array_reverse($balanceWithoutRemain));

    return $correctAnswer;
}