Alternare , è l'atto di prendere una stringa e annidarla tra parentesi alternate. Ecco come alternare una stringa.
Per una stringa di lunghezza N , prendi i caratteri N centrali e racchiudili tra parentesi. Quindi se la nostra stringa fosse
Hello world!
(12 caratteri), finiremo con(Hello world!)
Quindi, prendi i restanti
n-2
caratteri centrali e racchiudili tra parentesi quadre. In questo caso, i 10 caratteri centrali sonoello world
, quindi la prossima iterazione è:(H[ello world]!)
Finché sono rimasti più di due caratteri nel mezzo della stringa, ripetere gli ultimi due passaggi, alternando tra
()
e[]
. Ecco gli ultimi passaggi:(Hello world!) (H[ello world]!) (H[e(llo worl)d]!) (H[e(l[l(o[ w]o)r]l)d]!)
Poiché nell'ultima iterazione sono rimasti solo due caratteri nel mezzo, ci fermiamo. La nostra stringa finale è
(H[e(l[l(o[ w]o)r]l)d]!)
Nota come ci sono due caratteri tra parentesi centrali. Questo accade quando l'ingresso ha una lunghezza uniforme. Se l'input avesse una lunghezza dispari (ad esempio,
Hello, world!
con una virgola aggiunta), avremmo un solo carattere nel mezzo:(H[e(l[l(o[,( )w]o)r]l)d]!)
Per la sfida di oggi, è necessario scrivere un programma o una funzione che accetta una stringa come input e la alterna, producendo la nuova stringa. Puoi prendere input e output in qualsiasi formato ragionevole che ti piace. L'input avrà sempre almeno un carattere e conterrà solo ASCII stampabile. Puoi anche presumere che l'input non conterrà parentesi o parentesi quadre. Per le lingue tradizionali, questo non dovrebbe importare troppo, ma potrebbe rendere più semplice alcune lingue esoteriche.
Come al solito, si tratta di una competizione di code-golf , quindi cerca di fare la risposta più breve possibile nella lingua che preferisci. Divertiti!
Test 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)
()
) o possiamo iniziare con parentesi ( []
)?
()
HelloWorld
.