function isArraySortedAndValidGap($arr) {
$size = count($arr);
if ($size < 2) return true;
$increasing = $arr[1] > $arr[0];
for ($i = 1; $i < $size; ++$i) {
$diff = $arr[$i] - $arr[$i - 1];
if ($diff != 1 && $diff != 2 && $diff != 3 && $diff != -1 && $diff != -2 && $diff != -3) {
return false;
}
if (($increasing && $diff <= 0) || (!$increasing && $diff >= 0)) {
return false;
}
}
return true;
}
$arr1 = array(1, 2, 3, 5, 8, 11, 14, 15);
if (isArraySortedAndValidGap($arr1)) {
echo "Array is sorted and has valid gaps\n";
} else {
echo "Array is not sorted or gaps are invalid\n";
}
$arr2 = array(15, 14, 11, 8, 5, 3, 2, 1);
if (isArraySortedAndValidGap($arr2)) {
echo "Array is sorted and has valid gaps\n";
} else {
echo "Array is not sorted or gaps are invalid\n";
}
/*
run:
Array is sorted and has valid gaps
Array is sorted and has valid gaps
*/