모든 프로그래머는 대괄호 []{}()<>
가 정말 재미 있다는 것을 알고 있습니다. 이 재미를 악화시키기 위해, 직조 브라켓 그룹을 귀엽고 퍼지 다이어그램으로 변환 할 수 있습니다.
와 같이 대괄호가 포함 된 문자열이 있다고 가정 해 봅시다 [{][<(]})>(())
. 첫 번째 단계는 끈을 시계 방향으로 45도 회전시키는 것입니다. (Mathematica에서는 거의이 작업을 수행 할 수 있습니다 Rotate[ur_string,-pi/4]
). 첫 번째 단계의 결과는 다음과 같습니다.
[
{
]
[
<
(
]
}
)
>
(
(
)
)
그런 다음 각 문자 사이에 대각선을 추가하십시오.
[
{
]
[
<
(
]
}
)
>
(
(
)
)
다음으로 가장 왼쪽 대괄호로 시작하여 범죄와 파트너 사이에 사각형을 그립니다.
+---+
| |
| { |
| |
+---+
[
<
(
]
}
)
>
(
(
)
)
괄호 쌍마다이 과정을 반복하여 +
필요한 경우 이전 문자를 s로 덮어 씁니다 .
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| [ |
| |
| < |
| |
| ( |
| |
| ] |
| |
+-----------+
)
>
(
(
)
)
모든 것이 멋지고 정사각형이 될 때까지 계속하십시오.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| +-----+ |
| | | |
| | +---+-+---+
| | | | | |
| | | +-+-+-+ |
| | | | | | | |
| +-+-+-+ | | |
| | | | | |
+-----+-+---+ | |
| | | |
| +-----+ |
| |
+---------+
+-----+
| |
| +-+ |
| | | |
| +-+ |
| |
+-----+
입력
입력은 대괄호로 묶인 한 줄이며 다른 문자는 없으며 각 대괄호는 중 하나입니다 []{}()<>
. 각 유형 의 대괄호는 개별적으로 균형이 조정되지만 서로 다른 유형이 겹칠 수 있습니다 (이로 인해 사각형이 흥미로워집니다). 후행 줄 바꿈은 선택 사항입니다.
산출
괄호 문자열에서 생성 된 연동 사각형 패턴이 출력됩니다. 후행 공백과 후행 줄 바꿈은 선택 사항이지만 선행 공백이 없어야합니다.
골
이것은 코드 골프이며 가장 적은 바이트 수입니다.
[[]]
두 정사각형을 겹치게 출력 할 수 있습니까? 아니면 한 정사각형을 다른 정사각형으로 출력해야합니까?