Alternesting 은 문자열을 가져 와서 대괄호 안에 중첩시키는 행위입니다. 다음은 문자열 을 대체 하는 방법 입니다.
길이가 N 인 문자열의 경우 가운데 N 문자를 사용하고 괄호로 묶습니다. 문자열이
Hello world!
(12 자)라면(Hello world!)
그런 다음 나머지 중심
n-2
문자를 가져 와서 대괄호로 묶으십시오. 이 경우 가운데 10자는ello world
입니다. 다음 반복은 다음과 같습니다.(H[ello world]!)
문자열 중간에 문자가 두 개 이상 남아있는 경우 마지막 두 단계를 반복하여
()
와 사이를 번갈아 가십시오[]
. 마지막 단계는 다음과 같습니다.(Hello world!) (H[ello world]!) (H[e(llo worl)d]!) (H[e(l[l(o[ w]o)r]l)d]!)
마지막 반복에서 중간에 두 문자 만 남았으므로 중지합니다. 마지막 줄은
(H[e(l[l(o[ w]o)r]l)d]!)
가운데 괄호에 두 문자가 어떻게 나타나는지 참고하십시오. 이것은 입력이 짝수 길이 일 때 발생합니다. 입력이 홀수 길이 인 경우 (예
Hello, world!
: 쉼표가 추가 된 경우) 중간에 하나의 문자 만 있습니다.(H[e(l[l(o[,( )w]o)r]l)d]!)
오늘날의 과제를 해결하려면 문자열을 입력으로 사용하고이를 대체하여 새 문자열을 출력하는 프로그램이나 함수를 작성해야합니다. 원하는 형식으로 입력 및 출력 할 수 있습니다. 입력은 항상 하나 이상의 문자 길이이며 인쇄 가능한 ASCII 만 포함합니다. 입력에 괄호 나 대괄호가 포함 되지 않는다고 가정 할 수도 있습니다. 전통적인 언어의 경우이 문제는 그다지 중요하지 않지만 일부 난해한 언어에서는 더 쉬울 수 있습니다.
평소와 마찬가지로 이것은 코드 골프 경쟁이므로 선택한 언어로 가능한 한 짧은 답변을 작성하십시오. 즐기세요!
IO 테스트
#Input #Output
"Alternesting is fun!" --> (A[l(t[e(r[n(e[s(t[in]g) ]i)s] )f]u)n]!)
"PPCG" --> (P[PC]G)
"Code-golf" --> (C[o(d[e(-)g]o)l]f)
"4 8 15 16 23 42" --> (4[ (8[ (1[5( [1]6) ]2)3] )4]2)
"a" --> (a)
"ab" --> (ab)
"abc" --> (a[b]c)
()
)로 시작해야 하거나 대괄호 ( []
)로 시작할 수 있습니까?
()
HelloWorld
.