Есть массив целых. Задача:
Представить все значения как диапазоны: значение .. (значение + 50)
Взять первое значение (диапазон)
отсечь все пересекающиеся с ним диапазоны ниже
взять второе
отсечь пересекающиеся
следующий
и так далее
Сохранение порядка обязательно.
Код:
<?php
$arr = [100,125,75,175,25,300,275,325,375];
$step = 50;
for ($i = 0; $i <= count($arr)-1; $i++) {
$value = $arr[$i];
$arr = array_values(array_filter($arr, function($v) use ($value,$step) {
return ($value+$step < $v or $v+$step < $value or $v == $value);
}));
}
var_dump($arr); // [100, 175, 25, 300, 375]
?>
100к чисел этим кодом обрабатывать сутки.
Перебирать без функций "вручную"?
Или что ещё можно сделать?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей