3v4l.org

run code in 300+ PHP versions simultaneously
<?php function invChangeN($pattern, $inversion) { $junc = array_slice(['r', '3', '5', '7'], 0, count($pattern)); $pos = [ 'r' => [ 1, 7, 14], '3' => [-3, 5, 14], '5' => [ 3, 5, 10], '7' => [-1, 7, 10] ]; $inversion -= 2; $modScale = []; foreach ($pattern as $p => $f) { $p += ($pos[$f][0]*pow($inversion,2) + $pos[$f][1]*$inversion + $pos[$f][2])/2; $j = $junc[(array_search($f, $junc)+$inversion+2)%count($junc)]; $modScale[$p] = $j; } return $modScale; } var_dump(invChangeN([1=>"r",28=>"5",77=>"3"], 1));

preferences:
38.3 ms | 402 KiB | 5 Q