Data una matrice di qualsiasi profondità, disegna il suo contenuto con bordi +-|attorno a ciascun subarray. Questi sono i caratteri ASCII per il tubo positivo, negativo e verticale.
Ad esempio, se l'array è [1, 2, 3], disegna
+-----+
|1 2 3|
+-----+
Per un array nidificato come [[1, 2, 3], [4, 5], [6, 7, 8]], disegnare
+-----------------+
|+-----+---+-----+|
||1 2 3|4 5|6 7 8||
|+-----+---+-----+|
+-----------------+
Per una matrice irregolare come [[[1, 2, 3], [4, 5]], [6, 7, 8]], disegna
+-------------------+
|+-----------+-----+|
||+-----+---+|6 7 8||
|||1 2 3|4 5|| ||
||+-----+---+| ||
|+-----------+-----+|
+-------------------+
Si noti che c'è più spazio dopo il disegno [6, 7, 8]. Puoi disegnare i contenuti sulla riga più in alto, al centro o più in basso, ma qualunque cosa tu scelga, devi rimanere coerente.
Questa sfida è stata ispirata dal verbo scatola< di J.
Regole
- Questo è code-golf, quindi vince il codice più corto.
- I builtin che risolvono questo non sono ammessi.
- L'array di input conterrà solo valori interi o array non negativi. Ogni array sarà omogeneo, il che significa che i suoi elementi saranno solo array o solo numeri interi, ma mai un mix di entrambi.
- Ciascun subarray può essere nidificato a qualsiasi profondità.
- L'output può essere una stringa o una matrice di stringhe in cui ogni stringa è una riga di output.
Casi 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|||||+-----+|| | ||
||||+-------+|||+-------+| | ||
|||+---------+|| | | ||
||+-----------+| | | ||
|+-------------+---------+-----+-+|
+---------------------------------+
-1dal momento che ho anche limitato gli interi a non negativi. Quindi dovrebbe solo pulire l'output per quei valori non validi.