Привет,
Работал почти всегда на себе, нет опыта в тестовых заданиях. Вот работодатель скинул три задания, сделал одно для интереса, попинайте.. как в общем с оформлением/алгоритмом, в таком ключе нормально будет?
Скажу сразу, алогоритм сам написал, да есть в сети тыщи вариантом, в том числе через рекурсию, но уж очень наворочено как-то.. да красиво, но не совсем понятно )
Короче вот задание (я его изменил немного):
Дан массив [3279, 920, 4181, 8, 1, 4360, 407, 9950, 2098, 8579, 4914, 7204, 8875]. В нем нужно найти числа Фибоначчи ( 1, 1, 2, 3, 5, 8, 13, 21...), затем вычислить сумму.
Вот что получилось:
<?php
// PHP Version 7.4.11
// Функция, формирующая массив чисел Фибоначчи
function getFibonacci($number, $fibonacciNumbers)
{
$countNumbers = count($fibonacciNumbers);
$number1 = $fibonacciNumbers[$countNumbers - 2];
$number2 = $fibonacciNumbers[$countNumbers - 1];
if ($number1 + $number2 == $number) {
$fibonacciNumbers[] = $number;
}
return $fibonacciNumbers;
}
// Исходный массив
$inputNumbers = [3279, 920, 4181, 8, 337, 13, 918, 4923, 1,
4448, 8, 4756, 4012, 7467, 89, 21, 9238, 2326, 6453, 89, 4606,
3413, 3, 9950, 2098, 8579, 4914, 7204, 8875
];
// Инициализируем массив с первыми тремя числами Фибоначчи
$fibonacciNumbers = array(0, 1, 1);
// Формируем канонический ряд Фибоначчи от нуля до максимального значения,
// находящегося в исходном массиве
sort($inputNumbers);
$lastFibonacciNumber = $inputNumbers[count($inputNumbers) - 1];
for ($i = 0; $i <= $lastFibonacciNumber; $i++) {
$fibonacciNumbers = getFibonacci($i, $fibonacciNumbers);
}
// Находим смежные значения в исходном массиве и массиве с числами Фибоначчи,
// обнуляя индексы
$resultFibonacci = array_values(array_intersect($fibonacciNumbers, $inputNumbers));
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Сумма чисел Фибоначчи из иходного массива</title>
</head>
<body>
<strong>Числа Фибоначчи из иходного массива:</strong>
<?php
for ($i = 0; $i <= count($resultFibonacci) - 1; $i++) {
?>
<span><?= $resultFibonacci[$i] ?></span>
<?php
}
?>
<br/>
<strong>Сумма чисел Фибоначчи из иходного массива:</strong> <?= array_sum($resultFibonacci) ?>
</body>
</html>