깊이가 배열되면 +-|
각 하위 배열 주위에 테두리가있는 내용을 그립니다 . 더하기, 빼기 및 세로 파이프의 ASCII 문자입니다.
예를 들어, 어레이가 있다면 [1, 2, 3]
, 그릴
+-----+
|1 2 3|
+-----+
같은 중첩 배열 들어 [[1, 2, 3], [4, 5], [6, 7, 8]]
, 그릴
+-----------------+
|+-----+---+-----+|
||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
정수를 음수가 아닌 것으로 제한했기 때문에 센티넬 값으로 배열을 채울 수 있습니다. 그런 다음 유효하지 않은 값에 대한 출력을 정리해야합니다.