<?php const N = 4; function getLines(array $indexRows, int $position) { $data = []; foreach ($indexRows as $row) { $indices = array_diff( range(1, N), $row, ); foreach ($indices as $index) { $newRow = $row; $newRow[$position] = $index; $data[] = $newRow; } } $position++; return $position > N ? $data : getLines($data, $position); } function getSign(array $permutation) { $inversions = 0;