Dada una matriz de cualquier profundidad, dibuje su contenido con bordes +-|
alrededor de cada submatriz. Esos son los caracteres ASCII para más, menos y tubería vertical.
Por ejemplo, si la matriz es [1, 2, 3]
, dibuje
+-----+
|1 2 3|
+-----+
Para una matriz anidada como [[1, 2, 3], [4, 5], [6, 7, 8]]
, dibujar
+-----------------+
|+-----+---+-----+|
||1 2 3|4 5|6 7 8||
|+-----+---+-----+|
+-----------------+
Para una matriz irregular como [[[1, 2, 3], [4, 5]], [6, 7, 8]]
, dibujar
+-------------------+
|+-----------+-----+|
||+-----+---+|6 7 8||
|||1 2 3|4 5|| ||
||+-----+---+| ||
|+-----------+-----+|
+-------------------+
Observe que hay más espacio después del dibujo [6, 7, 8]
. Puede dibujar el contenido en la línea superior, central o inferior, pero cualquiera que elija, debe ser coherente.
Este desafío fue inspirado por el verbo en recuadro<
de J.
Reglas
- Este es el código de golf, por lo que gana el código más corto.
- Los componentes que resuelven esto no están permitidos.
- La matriz de entrada contendrá solo valores enteros no negativos o matrices. Cada matriz será homogénea, lo que significa que sus elementos serán solo matrices o enteros, pero nunca una combinación de ambos.
- Cada submatriz puede estar anidada a cualquier profundidad.
- La salida puede ser como una cadena o como una matriz de cadenas donde cada cadena es una línea de salida.
Casos de prueba
[]
++
||
++
[[], []]
+---+
|+++|
|||||
|+++|
+---+
[[], [1], [], [2], [], [3], []]
+-----------+
|++-++-++-++|
|||1||2||3|||
|++-++-++-++|
+-----------+
[[[[[0]]]]]
+---------+
|+-------+|
||+-----+||
|||+---+|||
||||+-+||||
|||||0|||||
||||+-+||||
|||+---+|||
||+-----+||
|+-------+|
+---------+
[[[[[4, 3, 2, 1]]]], [[[3, 2, 1]]], [[2, 1]], [1]]
+---------------------------------+
|+-------------+---------+-----+-+|
||+-----------+|+-------+|+---+|1||
|||+---------+|||+-----+|||2 1|| ||
||||+-------+|||||3 2 1|||+---+| ||
|||||4 3 2 1|||||+-----+|| | ||
||||+-------+|||+-------+| | ||
|||+---------+|| | | ||
||+-----------+| | | ||
|+-------------+---------+-----+-+|
+---------------------------------+
-1
porque también limité los enteros para que no sean negativos. Entonces solo tendría que limpiar la salida de esos valores no válidos.