lion0k/project-lvl1-s384

View on GitHub
src/games/prime.php

Summary

Maintainability
A
30 mins
Test Coverage
<?php
/**
 * User: li0n0k
 * Date: 28.11.18
 * Time: 15:10
 */

namespace Project1;

function isPrime($number)
{
    if (isEven($number)) {
        return false;
    }

    $startDivider = ceil($number / 2);
    $iter = function ($currentNumberIter) use (&$iter, $number) {
        if ($currentNumberIter == 1) {
            return true;
        }
        if (($number % $currentNumberIter) === 0) {
            return false;
        }
        $currentNumberIter--;

        return $iter($currentNumberIter);
    };

    return $iter($startDivider);
}

function startGamePrime()
{
    $description = 'Answer "yes" if given number is prime. Otherwise answer "no".';

    $funcTask = function () {
        $number = getRandomNumber();
        $correctAnswer = function () use ($number) {
            return (isPrime($number)) ? 'yes' : 'no';
        };

        return ['question' => $number, 'correctAnswer' => $correctAnswer()];
    };

    startPlay($description, $funcTask);
}