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-2postacie 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.