이 질문을 바탕으로 합니다.
문자열이 주어지면 각 브래킷 ()[]{}<>
을 적절한 유형의 브래킷 으로 교체 하여 브래킷이 일치하고 중첩 된 브래킷이 다음과 같이 순환합니다.
- 가장 바깥 쪽은
()
- 직접 내부에
()
있어야합니다[]
- 직접 내부에
[]
있어야합니다{}
- 직접 내부에
{}
있어야합니다<>
- 직접 내부
<>
될 것입니다()
다시 (사이클)
대괄호가 아닌 모든 문자는 그대로 유지해야합니다. 열린 괄호는 일부 유형의 열린 괄호로만 교체 할 수 있으며 닫힌 괄호가있는 닫힌 괄호로만 교체 할 수 있습니다.
입력은 항상 이것을 가능하게합니다. 이는 유형이 무시되면 대괄호가 올바르게 일치 함을 의미합니다. 따라서 {ab<)c]
유효한 입력이지만 ab)(cd
그렇지 ab((cd
않습니다.
예 :
2#jd {¤>. = 2#jd (¤).
abcdef = abcdef
(3×5+(4-1)) = (3×5+[4-1])
<<<>><<>><<<<<<>>>>>>> = ([{}][{}][{<([{}])>}])
이 방법으로 입력을 기본적으로 변환하는 것은 사용할 수 없습니다 (언어의 자동 구문).
항상 그렇듯이 가장 짧은 코드가 승리합니다.
나는 도전을 이해하지 못한다. 입력과 관련하여 출력이 무엇이어야합니까?
—
xnor
@xnor 출력은 네 종류의 괄호를 제외하고 입력과 같은 문자열이어야합니다. 패턴과 일치하도록 교체해야합니다.
—
Dirk Reichel
아, 이제 알겠습니다. 나는 "해야한다"는 것이 당신이 사실로 만들어야한다는 것을 이해하지 못했습니다. 더 명확하게하기 위해 편집하겠습니다.
—
xnor
@ DirkReichel 나는 그것이 당신이 걱정할 필요가 있다고 생각하지 않습니다. 어떤 언어라도이 특정 변형을 기본적으로 수행 할 수 있다고 상상할 수 없으며, 그러한 언어가있을 가능성이 높을 경우 그 언어로 된 답변은 그다지 흥미롭지 않을 것입니다.
—
Martin Ender
@DirkReichel 요점이 뭐야? ASCII 만 사용하면됩니다. 다른 문자를 사용하면 ASCII 전용 언어에 대한 불필요한 제한 외에는 문제가 없습니다.
—
FlipTack