Considérons une chaîne non vide de parenthèses correctement équilibrées:
(()(()())()((())))(())
On peut imaginer que chaque paire de parenthèses représente un anneau dans une construction télescopique effondrée . Alors étendons le télescope:
( )( )
()( )()( ) ()
()() ( )
()
Une autre façon de voir les choses est que les parenthèses à la profondeur n sont déplacées vers la ligne n , tout en conservant leur position horizontale.
Votre tâche consiste à prendre une telle chaîne de parenthèses équilibrées et à produire la version étendue.
Vous pouvez écrire un programme ou une fonction en prenant une entrée via STDIN (ou son équivalent le plus proche), un argument de ligne de commande ou un paramètre de fonction et en produisant une sortie via un paramètre STDOUT (ou son équivalent le plus proche), une valeur de retour ou une fonction (out).
Vous pouvez supposer que la chaîne d'entrée est valide, c'est-à-dire qu'elle ne comprend que des parenthèses correctement balancées.
Vous pouvez imprimer des espaces en fin de ligne sur chaque ligne, mais pas plus que nécessaire. Au total, les lignes ne doivent pas dépasser deux fois la longueur de la chaîne d'entrée. Vous pouvez éventuellement imprimer une nouvelle ligne de fin.
Exemples
En plus de l'exemple ci-dessus, voici quelques tests supplémentaires (les entrées et les sorties sont séparées par une ligne vide).
()
()
(((())))
( )
( )
( )
()
()(())((()))(())()
()( )( )( )()
() ( ) ()
()
((()())()(()(())()))
( )
( )()( )
()() ()( )()
()
Défis associés:
- Topographic Strings , qui vous demande de produire ce qui est essentiellement le complément de la sortie dans ce défi.
- Code Explanation Formatter , une large généralisation des idées de ce défi, publié récemment par PhiNotPi. (En fait, la description originale de son idée par PhiNotPi était ce qui a inspiré ce défi.)
Classements
Euh, cela a eu beaucoup de participation, alors voici un extrait de pile pour générer à la fois un classement régulier et un aperçu des gagnants par langue.
Pour vous assurer que votre réponse apparaît, commencez votre réponse par un titre, en utilisant le modèle Markdown suivant:
# Language Name, N bytes
où N
est la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores en les effaçant. Par exemple:
# Ruby, <s>104</s> <s>101</s> 96 bytes