<?php
/**
* @param array $numbers
*
* @return array
*/
function find_even(array $numbers) {
if (count($numbers) === 0) {
return [];
}
if (count($numbers) === 1) {
return has_even($numbers) ? $numbers : [];
}
list($left, $right) = array_chunk($numbers, ceil(count($numbers) / 2));
$left = has_even($left) ? $left : [];
$right = has_even($right) ? $right : [];
$leftResult = (count($left) > 1) ? find_even($left) : $left;
$rightResult = (count($right) > 1) ? find_even($right) : $right;
return array_merge($leftResult, $rightResult);
}
/**
* @param array $numbers
*
* @return bool
*/
function has_even(array $numbers) {
echo join(' ', $numbers) . PHP_EOL;
foreach ($numbers as $number) {
if ($number % 2 === 0) {
return true;
}
}
return false;
}
$numbers = [1, 2, 3, 7, 5, 7, 1, 3, 4, 9, 7, 3, 5, 7, 9];
echo join(' ', $numbers) . PHP_EOL . PHP_EOL;
echo PHP_EOL . join(' ', find_even($numbers)) . PHP_EOL;
preferences:
41.26 ms | 402 KiB | 5 Q