Étant donné un tableau de n'importe quelle profondeur, dessinez son contenu avec des bordures +-|
autour de chaque sous- tableau . Ce sont les caractères ASCII pour les tuyaux plus, moins et verticaux.
Par exemple, si le tableau est [1, 2, 3]
, dessinez
+-----+
|1 2 3|
+-----+
Pour un tableau imbriqué tel que [[1, 2, 3], [4, 5], [6, 7, 8]]
, dessinez
+-----------------+
|+-----+---+-----+|
||1 2 3|4 5|6 7 8||
|+-----+---+-----+|
+-----------------+
Pour un tableau irrégulier tel que [[[1, 2, 3], [4, 5]], [6, 7, 8]]
, dessinez
+-------------------+
|+-----------+-----+|
||+-----+---+|6 7 8||
|||1 2 3|4 5|| ||
||+-----+---+| ||
|+-----------+-----+|
+-------------------+
Notez qu'il y a plus d'espace après le dessin [6, 7, 8]
. Vous pouvez soit dessiner le contenu sur la ligne supérieure, centrale ou inférieure, mais selon votre choix, vous devez rester cohérent.
Ce défi a été inspiré par le verbe boîte<
de J.
Règles
- C'est le code-golf donc le code le plus court l'emporte.
- Les buildins qui résolvent ce problème ne sont pas autorisés.
- Le tableau d'entrée ne contiendra que des valeurs entières non négatives ou des tableaux. Chaque tableau sera homogène, ce qui signifie que ses éléments seront soit uniquement des tableaux ou uniquement des entiers, mais jamais un mélange des deux.
- Chaque sous-réseau peut être imbriqué à n'importe quelle profondeur.
- La sortie peut être soit sous forme de chaîne, soit sous forme de tableau de chaînes, chaque chaîne étant une ligne de sortie.
Cas de test
[]
++
||
++
[[], []]
+---+
|+++|
|||||
|+++|
+---+
[[], [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
comme j'ai également limité les entiers à être non négatifs. Il suffirait alors de nettoyer la sortie pour ces valeurs non valides.