Considere una cadena no vacía de paréntesis correctamente equilibrados:
(()(()())()((())))(())
Podemos imaginar que cada par de paréntesis representa un anillo en una construcción telescópica colapsada . Entonces extendamos el telescopio:
( )( )
()( )()( ) ()
()() ( )
()
Otra forma de verlo es que los paréntesis en la profundidad n se mueven a la línea n , manteniendo su posición horizontal.
Su tarea es tomar una cadena de paréntesis equilibrados y producir la versión extendida.
Puede escribir un programa o función, tomando la entrada a través de STDIN (o equivalente más cercano), argumento de línea de comando o parámetro de función, y produciendo salida a través de STDOUT (o equivalente más cercano), valor de retorno o parámetro de función (out).
Puede suponer que la cadena de entrada es válida, es decir, consta solo de paréntesis, que están correctamente equilibrados.
Puede imprimir espacios finales en cada línea, pero no más espacios iniciales de los necesarios. En total, las líneas no deben ser más largas que el doble de la longitud de la cadena de entrada. Opcionalmente, puede imprimir una nueva línea final.
Ejemplos
Además del ejemplo anterior, aquí hay algunos casos de prueba más (la entrada y la salida están separadas por una línea vacía).
()
()
(((())))
( )
( )
( )
()
()(())((()))(())()
()( )( )( )()
() ( ) ()
()
((()())()(()(())()))
( )
( )()( )
()() ()( )()
()
Desafíos relacionados:
- Cadenas topográficas , que le pide que produzca lo que es esencialmente el complemento de la salida en este desafío.
- Code Explanation Formatter , una amplia generalización de las ideas en este desafío, publicado recientemente por PhiNotPi. (De hecho, la descripción original de PhiNotPi de su idea fue lo que inspiró este desafío).
Tablas de clasificación
Huh, esto tuvo mucha participación, así que aquí hay un Fragmento de pila para generar una tabla de clasificación regular y una descripción general de los ganadores por idioma.
Para asegurarse de que su respuesta se muestre, comience con un título, utilizando la siguiente plantilla de Markdown:
# Language Name, N bytes
¿Dónde N
está el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes