Учитывая массив любой глубины, нарисуйте его содержимое с границами +-|
вокруг каждого подмассива. Это символы ASCII для плюса, минуса и вертикальной трубы.
Например, если массив [1, 2, 3]
, рисовать
+-----+
|1 2 3|
+-----+
Для вложенного массива, такого как [[1, 2, 3], [4, 5], [6, 7, 8]]
, draw
+-----------------+
|+-----+---+-----+|
||1 2 3|4 5|6 7 8||
|+-----+---+-----+|
+-----------------+
Для рваного массива, например [[[1, 2, 3], [4, 5]], [6, 7, 8]]
, Draw
+-------------------+
|+-----------+-----+|
||+-----+---+|6 7 8||
|||1 2 3|4 5|| ||
||+-----+---+| ||
|+-----------+-----+|
+-------------------+
Обратите внимание, что после рисования остается больше места [6, 7, 8]
. Вы можете нарисовать содержимое на верхней, центральной или самой нижней линии, но какой бы вы ни выбрали, вы должны оставаться последовательными.
Эта задача была вдохновлена коробка глагола <
от J.
правила
- Это код-гольф, поэтому выигрывает самый короткий код.
- Встроенные функции, которые решают эту проблему, не допускаются.
- Входной массив будет содержать только неотрицательные целочисленные значения или массивы. Каждый массив будет однородным, это означает, что его элементы будут либо только массивами, либо только целыми числами, но никогда не будут сочетать оба.
- Каждый подмассив может быть вложен на любую глубину.
- Вывод может быть либо в виде строки, либо в виде массива строк, где каждая строка является строкой вывода.
Тестовые случаи
[]
++
||
++
[[], []]
+---+
|+++|
|||||
|+++|
+---+
[[], [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
как я также ограничил целые числа неотрицательными. Тогда просто нужно очистить вывод для этих недопустимых значений.