fork download
  1. <?php
  2.  
  3. function spiralmatrix($arr)
  4. {
  5. return $arr
  6. array_shift($arr),
  7. spiralmatrix(array_reverse(transpose($arr)))
  8. )
  9. : $arr;
  10. }
  11.  
  12. function transpose($arr)
  13. {
  14. return $arr
  15. ? count($arr) == 1
  16. ? array_chunk($arr[0], 1)
  17. : array_map(null, ...$arr)
  18. : $arr;
  19. }
  20.  
  21. print_r(spiralmatrix([]));
  22. print_r(spiralmatrix([[1]]));
  23. print_r(spiralmatrix([[1,2],[4,3]]));
  24. print_r(spiralmatrix([[1,2,3],[8,9,4],[7,6,5]]));
  25. print_r(spiralmatrix([[1,2,3,4],[12,13,14,5],[11,16,15,6],[10,9,8,7]]));
  26. print_r(spiralmatrix([[1,2,3,4],[10,11,12,5],[9,8,7,6]]));
Success #stdin #stdout 0s 82560KB
stdin
Standard input is empty
stdout
Array
(
)
Array
(
    [0] => 1
)
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
)
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
    [9] => 10
    [10] => 11
    [11] => 12
    [12] => 13
    [13] => 14
    [14] => 15
    [15] => 16
)
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
    [9] => 10
    [10] => 11
    [11] => 12
)