Alterner consiste à prendre une chaîne et à l’emboîter de manière alternée. Voici comment vous alternez une chaîne.
Pour une chaîne de longueur N , prenez les caractères du centre N et entourez-les de parenthèses. Donc, si notre chaîne était
Hello world!
(12 caractères), nous finirons avec(Hello world!)
Ensuite, prenez les
n-2
caractères centraux restants et entourez-les entre crochets. Dans ce cas, les 10 caractères centraux sontello world
, ainsi la prochaine itération est:(H[ello world]!)
Tant qu'il reste plus de deux caractères au milieu de la chaîne, répétez les deux dernières étapes en alternant entre
()
et[]
. Voici les dernières étapes:(Hello world!) (H[ello world]!) (H[e(llo worl)d]!) (H[e(l[l(o[ w]o)r]l)d]!)
Comme il ne reste que deux caractères au milieu de la dernière itération, nous nous arrêtons. Notre dernière chaîne est
(H[e(l[l(o[ w]o)r]l)d]!)
Notez qu’il ya deux caractères entre les parenthèses. Cela se produit lorsque l'entrée est de longueur égale. Si l'entrée avait une longueur impaire (par exemple,
Hello, world!
avec une virgule ajoutée), nous n'aurions qu'un seul caractère au milieu:(H[e(l[l(o[,( )w]o)r]l)d]!)
Pour le défi d'aujourd'hui, vous devez écrire un programme ou une fonction qui prend une chaîne en tant qu'entrée et l'alterne, générant la nouvelle chaîne. Vous pouvez prendre des entrées et des sorties dans n’importe quel format raisonnable. L'entrée comportera toujours au moins un caractère et ne contiendra que de l'ASCII imprimable. Vous pouvez également supposer que l'entrée ne contiendra pas de parenthèses ni de crochets. Pour les langues traditionnelles, cela ne devrait pas avoir trop d'importance, mais cela pourrait faciliter la tâche de certaines langues ésotériques.
Comme d’habitude, il s’agit d’une compétition de code-golf . Essayez donc de donner la réponse la plus courte possible dans la langue de votre choix. S'amuser!
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)
()
) ou peut-on commencer par des crochets ( []
)?
()
HelloWorld
.