<?php
function array_make_square(array &$array, $fill = ' ') {
$pad = count(array_keys($array));
foreach ($array as &$row) {
$row = array_pad($row, $pad, $fill);
}
}
function array_organize(array &$outer) {
$offset = 0;
foreach ($outer as &$inner) {
sort($inner);
array_rotate($inner, $offset++);
}
}
function array_rotate(array &$array, $offset) {
foreach (array_slice($array, 0, $offset, true) as $key => $val) {
unset($array[$key]);
$array[$key] = $val;
}
}
function solve($test) {
array_make_square($test);
array_organize($test);
return $test;
}
function display($outer) {
echo "[\n";
foreach ($outer as $row => $inner) {
echo " $row => ['" . implode("', '", $inner) . "']\n";
}
echo "]\n";
}
$tests = [
[ ['X'], ['X'], ['X'] ],
[ ['X', 'Y'], ['X', 'Y'], ['X', 'Y'] ],
[ ['X', 'Y', 'Z'], ['X', 'Y', 'Z'], ['X', 'Y', 'Z'] ],
];
array_map('display', array_map('solve', $tests));
- Output for 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
- [
0 => [' ', ' ', 'X']
1 => [' ', 'X', ' ']
2 => ['X', ' ', ' ']
]
[
0 => [' ', 'X', 'Y']
1 => ['X', 'Y', ' ']
2 => ['Y', ' ', 'X']
]
[
0 => ['X', 'Y', 'Z']
1 => ['Y', 'Z', 'X']
2 => ['Z', 'X', 'Y']
]
- Output for 8.3.5
- Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
[
0 => [' ', ' ', 'X']
1 => [' ', 'X', ' ']
2 => ['X', ' ', ' ']
]
[
0 => [' ', 'X', 'Y']
1 => ['X', 'Y', ' ']
2 => ['Y', ' ', 'X']
]
[
0 => ['X', 'Y', 'Z']
1 => ['Y', 'Z', 'X']
2 => ['Z', 'X', 'Y']
]
preferences:
191.13 ms | 402 KiB | 291 Q