모든 프로그래머는 사각형 □
이 정말 재미 있다는 것을 알고 있습니다. 이 재미를 악화시키기 위해이 귀엽고 퍼지 다이어그램은 짜여진 괄호 그룹으로 변환 될 수 있습니다.
다음과 같이 연동 사각형 그룹이 있다고 가정 해 봅시다.
+------------+
| |
+--+-+ +----+-+
| | | | | |
| | | +---+--+ | |
| | | | | | | |
+--+-+ | +-+--+-+-+-+
| | | | | | | |
| | | | | | | |
| | | | | | | | +-+
| +-+-+--+ | | | | |
| | | | | | +-+-+-+
+-----+-+----+ | | | | | |
| | | | | +-+ |
| +------+ | | |
| | | |
+----------+ +-----+
추가 사항 :
- 두 개의
+
인접 하지 않습니다 - 두 개의 직사각형은 모서리 나 모서리를 공유하지 않습니다
- 각 열에는 최대 하나의 수직 모서리 만있을 것입니다
첫 번째 단계는 사각형의 가장 왼쪽 가장자리를 보는 것입니다. 네 가지 브래킷 유형 중 하나를 지정하십시오 ({[<
. 선택합니다 [
.
+------------+
| |
[--+-] +----+-+
[ | ] | | |
[ | ] +---+--+ | |
[ | ] | | | | |
[--+-] | +-+--+-+-+-+
| | | | | | | |
| | | | | | | |
| | | | | | | | +-+
| +-+-+--+ | | | | |
| | | | | | +-+-+-+
+-----+-+----+ | | | | | |
| | | | | +-+ |
| +------+ | | |
| | | |
+----------+ +-----+
이제 가장 왼쪽에있는 두 번째 사각형을보십시오. [
사각형 과 겹치므로 다른 유형이어야합니다. 선택합니다 (
.
(------------)
( )
[--(-] +----)-+
[ ( ] | ) |
[ ( ] +---+--+ ) |
[ ( ] | | | ) |
[--(-] | +-+--+-)-+-+
( | | | | ) | |
( | | | | ) | |
( | | | | ) | | +-+
( +-+-+--+ ) | | | |
( | | ) | | +-+-+-+
(-----+-+----) | | | | | |
| | | | | +-+ |
| +------+ | | |
| | | |
+----------+ +-----+
다음으로 가장 왼쪽에있는 사각형은 이전 사각형과 교차하지 않지만 이전 사각형 안에 중첩됩니다. (
다시 할당하기로 결정 했습니다. 가능하면 내부에 중첩되는 것과 같은 유형의 사각형을 할당하는 것이 일반적이지만 좋은 경우가 있습니다.
(------------)
( )
[--(-] +----)-+
[ ( ] | ) |
[ ( ] (---+--) ) |
[ ( ] ( | ) ) |
[--(-] ( +-+--)-)-+-+
( ( | | ) ) | |
( ( | | ) ) | |
( ( | | ) ) | | +-+
( (-+-+--) ) | | | |
( | | ) | | +-+-+-+
(-----+-+----) | | | | | |
| | | | | +-+ |
| +------+ | | |
| | | |
+----------+ +-----+
이 다음 사각형을 [
다시 할당 할 수 있습니다 .
(------------)
( )
[--(-] +----)-+
[ ( ] | ) |
[ ( ] (---+--) ) |
[ ( ] ( | ) ) |
[--(-] ( [-+--)-)-+-]
( ( [ | ) ) | ]
( ( [ | ) ) | ]
( ( [ | ) ) | ] +-+
( (-[-+--) ) | ] | |
( [ | ) | ] +-+-+-+
(-----[-+----) | ] | | | |
[ | | ] | +-+ |
[ +------+ ] | |
[ ] | |
[----------] +-----+
다음 사각형은 좀 재미 있습니다. a (
와 [
사각형을 모두 교차 하므로 사각형이라고 할 수 있습니다 {
( <
그러나 아무도 좋아하지 않습니다).
(------------)
( )
[--(-] {----)-}
[ ( ] { ) }
[ ( ] (---{--) ) }
[ ( ] ( { ) ) }
[--(-] ( [-{--)-)-}-]
( ( [ { ) ) } ]
( ( [ { ) ) } ]
( ( [ { ) ) } ] +-+
( (-[-{--) ) } ] | |
( [ { ) } ] +-+-+-+
(-----[-{----) } ] | | | |
[ { } ] | +-+ |
[ {------} ] | |
[ ] | |
[----------] +-----+
마지막 두 사각형은 그렇게 나쁘지 않습니다. 두 가지 유형이 될 수 있습니다.
(------------)
( )
[--(-] {----)-}
[ ( ] { ) }
[ ( ] (---{--) ) }
[ ( ] ( { ) ) }
[--(-] ( [-{--)-)-}-]
( ( [ { ) ) } ]
( ( [ { ) ) } ]
( ( [ { ) ) } ] {-}
( (-[-{--) ) } ] { }
( [ { ) } ] <-{-}->
(-----[-{----) } ] < { } >
[ { } ] < {-} >
[ {------} ] < >
[ ] < >
[----------] <----->
사각형을 읽으면 얻을 수 [(]([{))}]<{}>
있습니다. 이것은 위의 입력에 대해 가능한 출력 중 하나입니다. 다음은 가능한 많은 옵션의 목록입니다.
[(]([{))}]<{}>
<(>(<{))}>{()}
{<}[{(]>)}[<>]
any of the 4! permutations of ([{<, you get the idea...
입력
ASCII 아트 사각형은 모호하지 않으며 (위의 참고 참조) 괄호 문자열로 올바르게 변환 될 수 있다고 가정합니다. 선택적 후행 줄 바꿈을 사용하여 후행 공백이 없거나 사각형으로 채워져 있다고 가정 할 수 있습니다. 선행 공백이 없습니다.
산출
사각형의 교차 제한을 따르는 유효한 대괄호 문자열 중 하나. 선택적인 후행 줄 바꿈 이외의 대괄호 이외의 문자는 없어야합니다. 기본 규칙은 두 개의 사각형이 교차하는 경우 다른 대괄호 유형을 지정해야합니다.
골
이것은 품질에 비해 수량이 부족한 코드 골프입니다.
+
, 왼쪽 상단 모서리에 대해 사용할 수 없으며 왼쪽 하단 모서리에 +
대해 (즉시 아래에)있을 수 없습니까?