언젠가는 사용하지 않는 컴퓨터 코드와 어댑터 (USB-USB mini, VGA-DVI 등)의 큰 상자를 파고 들었다고 가정하십시오. 엉킨 코드가 어디에서나 엉망이되어 모든 코드를 하나의 긴 가닥으로 묶은 다음 롤업하여 물건을 단순화 할 수 있는지 궁금합니다.
문제는 모든 코드와 어댑터를 이렇게 긴 줄로 연결할 수 있습니까? 플러그가 완전히 다른 두 개의 코드 만 있다면 서로 연결할 수 없습니다. 그러나 두 코드를 모두 연결할 수있는 세 번째 코드가 있다면 모든 코드를 함께 묶을 수 있습니다.
모든 코드 가닥 끝에 어떤 유형의 플러그가 있는지는 신경 쓰지 않습니다. 루프를 형성하기 위해 서로 연결하지 않아도됩니다. 모든 코드 가닥을 만들 수 있는지, 가능하다면 어떻게해야하는지 알고 싶을뿐입니다.
도전
모든 줄이 소유 한 코드 중 하나를 나타내는 여러 줄로 된 프로그램이나 함수를 작성하십시오. 코드는 -
한쪽 끝에 플러그가있는 하나 이상의 대시 ( )로 구성됩니다. 플러그는 항상 8 자 중 하나입니다 ()[]{}<>
.
다음은 유효한 코드입니다.
>->
(--[
}-{
<-----]
(---)
그러나 이것들은 아닙니다 :
-->
(--
)--
[{
---
코드를 연결할 때 정확히 동일한 브래킷 유형의 플러그 만 함께 연결할 수 있습니다.
다음은 유효한 코드 연결입니다.
...---((---...
...---))---...
...---]]---...
...---{{---...
...---<<---...
그리고 이것들은 유효하지 않습니다 :
...---()---...
...---)(---...
...---{]---...
...---{[---...
...---><---...
...--->)---...
입력의 모든 코드를 하나의 긴 스트랜드로 재 배열하고 함께 연결할 수있는 경우 해당 스트랜드를 한 줄의 stdout으로 출력합니다 (선택적 후행 줄 바꿈). 여러 솔루션이있는 경우 출력 할 솔루션 중 하나를 선택할 수 있습니다. 단일 가닥을 만들 수 없으면 아무 것도 출력하지 않습니다 (또는 선택적인 후행 줄 바꿈으로 빈 문자열을 출력합니다).
예를 들어 입력이
[-->
{---]
>----{
출력은
[-->>----{{---]
모든 코드가 서로 연결되어 있습니다.
그러나 입력이
[-->
{---]
코드를 연결할 수 없으므로 출력이 없습니다.
연결하는 데 필요한만큼 코드를 뒤집을 수 있습니다. 예를 들어, [-->
그리고 <--]
그들이 연결 유형과 동일하게 할 수 있기 때문에 효과적으로 같은 코드입니다. 일부 출력은 입력 코드 플립에 따라 달라질 수 있습니다.
예를 들어
(-[
}--]
출력 할 수 있었다
(-[[--{
두 번째 코드가 뒤집힌 곳
}--]]-)
첫 번째 코드가 뒤집힌 곳.
(일반적으로 전체 출력 플립은 모든 코드를 개별적으로 처음 플립하는 것과 동일하므로 유효합니다.)
출력의 코드 길이는 물론 해당 입력 코드의 길이와 일치해야합니다. 그러나 모든 코드 가닥을 만들기 위해 코드를 원하는만큼 재정렬하고 뒤집을 수 있습니다. 입력에는 항상 하나 이상의 코드가 포함됩니다.
바이트 단위의 가장 짧은 코드가 이깁니다.
테스트 사례
출력이있는 경우 :
[-->
{---]
>----{
gives
[-->>----{{---]
or
[---}}----<<--]
(-[
}--]
gives
(-[[--{
or
}--]]-)
(-)
gives
(-)
[--{
gives
[--{
or
}--]
[-]
]-[
gives
[-]]-[
or
]-[[-]
[----->
)------------[
{--<
}---)
could give
[----->>--}}---))------------[
or
>--}}---))------------[[----->
or
}---))------------[[----->>--}
or
{--<<-----]]------------((---{
etc.
>-->
>->
>--->
could give
>-->>->>--->
or
>--->>-->>->
or
>->>-->>--->
or
<--<<---<<-<
etc.
(-]
]->
>-}
}-)
)-[
[-<
<-{
{-(
could give
(-]]->>-}}-))-[[-<<-{{-(
or
{-((-]]->>-}}-))-[[-<<-{
or
<-{{-((-]]->>-}}-))-[[->
etc.
출력이없는 경우 :
[-->
{---]
[-]
[-]
(-]
]->
}-)
>->
>-->
]---]
[-------------------]
]-------------------[
[-----------------]
[-----------------]
{--[
]--}