<?php
function repeatIntMountain(int $value, int $min, int $max)
{
$validValueNum = $max - $min + 1;
$offset = (($value % $validValueNum) + $min) % $validValueNum;
if ($offset < 0) {
$offset = $validValueNum + ($offset % $validValueNum);
}
return $min + $offset;
}
function repeatIntTuna(int $value, int $min, int $max)
{
$validValueNum = $max - $min + 1;
$hogeX = $value + $min;
if($value < 0){
$hogeX = 0 - $value + $min;
}
return ($hogeX % $validValueNum) + $min;
}
echo 'Test 2 to 5 (Mountain)' . PHP_EOL;
echo '---------------------------------' . PHP_EOL;
foreach (range(-10, 10) as $i)
{
echo $i . ' → ' . repeatIntMountain($i, 2, 5) . PHP_EOL;
}
echo PHP_EOL;
echo 'Test 3 to 8 (Mountain)' . PHP_EOL;
echo '---------------------------------' . PHP_EOL;
foreach (range(-10, 10) as $i)
{
echo $i . ' → ' . repeatIntMountain($i, 3, 8) . PHP_EOL;
}
echo PHP_EOL;
echo 'Test 2 to 5 (Tuna)' . PHP_EOL;
echo '---------------------------------' . PHP_EOL;
foreach (range(-10, 10) as $i)
{
echo $i . ' → ' . repeatIntTuna($i, 2, 5) . PHP_EOL;
}
echo PHP_EOL;
echo 'Test 3 to 8 (Tuna)' . PHP_EOL;
echo '---------------------------------' . PHP_EOL;
foreach (range(-10, 10) as $i)
{
echo $i . ' → ' . repeatIntTuna($i, 3, 8) . PHP_EOL;
}
echo PHP_EOL;
preferences:
29.06 ms | 402 KiB | 5 Q