Alternesting to czynność polegająca na wzięciu łańcucha i zagnieżdżeniu go w naprzemiennych nawiasach. Oto jak zmienić ciąg.
W przypadku ciągu o długości N weź środkowe N znaków i otocz je nawiasami. Więc jeśli nasz ciąg miał
Hello world!
(12 znaków), to skończymy(Hello world!)
Następnie weź pozostałe środkowe
n-2
postacie i otocz je nawiasami kwadratowymi. W tym przypadku środkowych 10 znaków toello world
, więc następna iteracja to:(H[ello world]!)
Dopóki na środku ciągu pozostaną więcej niż dwa znaki, powtórz ostatnie dwa kroki, naprzemiennie między
()
i[]
. Oto ostatnie kroki:(Hello world!) (H[ello world]!) (H[e(llo worl)d]!) (H[e(l[l(o[ w]o)r]l)d]!)
Ponieważ na ostatniej iteracji na środku pozostały tylko dwie postacie, zatrzymujemy się. Nasz ostatni ciąg to
(H[e(l[l(o[ w]o)r]l)d]!)
Zwróć uwagę, że w środkowych nawiasach znajdują się dwa znaki. Dzieje się tak, gdy wejście ma równą długość. Gdyby dane wejściowe miały nieparzystą długość (na przykład
Hello, world!
z dodanym przecinkiem), mielibyśmy tylko jeden znak pośrodku:(H[e(l[l(o[,( )w]o)r]l)d]!)
W dzisiejszym wyzwaniu musisz napisać program lub funkcję, która pobiera ciąg znaków jako dane wejściowe i zmienia go, generując nowy ciąg. Możesz pobierać dane wejściowe i wyjściowe w dowolnym rozsądnym formacie. Dane wejściowe zawsze będą miały co najmniej jeden znak i będą zawierać tylko drukowalne ASCII. Możesz również założyć, że dane wejściowe nie będą zawierać nawiasów ani nawiasów kwadratowych. W przypadku języków tradycyjnych nie powinno to mieć większego znaczenia, ale może to ułatwić niektóre języki ezoteryczne.
Jak zwykle są to zawody z golfem , więc postaraj się udzielić możliwie najkrótszej odpowiedzi w wybranym języku. Baw się dobrze!
Przetestuj 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)
()
), czy możemy zaczynać od nawiasów ( []
)?
()
HelloWorld
.