<?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));
preferences:
59.48 ms | 402 KiB | 5 Q