Zeichnen Sie den Inhalt eines Arrays beliebiger Tiefe mit Rahmen +-|
um jedes Subarray. Dies sind die ASCII-Zeichen für Plus, Minus und vertikale Pipe.
Wenn das Array beispielsweise ist [1, 2, 3]
, zeichnen Sie
+-----+
|1 2 3|
+-----+
[[1, 2, 3], [4, 5], [6, 7, 8]]
Zeichnen Sie für ein verschachteltes Array wie
+-----------------+
|+-----+---+-----+|
||1 2 3|4 5|6 7 8||
|+-----+---+-----+|
+-----------------+
[[[1, 2, 3], [4, 5]], [6, 7, 8]]
Zeichnen Sie für ein zerlumptes Array wie
+-------------------+
|+-----------+-----+|
||+-----+---+|6 7 8||
|||1 2 3|4 5|| ||
||+-----+---+| ||
|+-----------+-----+|
+-------------------+
Beachten Sie, dass nach dem Zeichnen mehr Platz vorhanden ist [6, 7, 8]
. Sie können den Inhalt entweder in der obersten, in der Mitte oder in der untersten Zeile zeichnen, aber je nachdem, was Sie auswählen, müssen Sie konsistent bleiben.
Diese Herausforderung wurde durch das Box- Verb <
von J. inspiriert.
Regeln
- Das ist Code-Golf, also gewinnt der kürzeste Code.
- Builtins, die dies lösen, sind nicht erlaubt.
- Das Eingabearray enthält nur nicht negative Ganzzahlwerte oder Arrays. Jedes Array ist homogen, dh, seine Elemente bestehen entweder nur aus Arrays oder nur aus ganzen Zahlen, jedoch niemals aus einer Mischung aus beiden.
- Jedes Subarray kann bis zu einer beliebigen Tiefe verschachtelt sein.
- Die Ausgabe kann entweder als Zeichenfolge oder als Array von Zeichenfolgen erfolgen, wobei jede Zeichenfolge eine Ausgabezeile ist.
Testfälle
[]
++
||
++
[[], []]
+---+
|+++|
|||||
|+++|
+---+
[[], [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
weil ich auch die Ganzzahlen auf nicht negative Werte beschränkt habe. Dann müsste nur noch die Ausgabe für diese ungültigen Werte bereinigen.