Eres un gerente de proyecto. Un día, uno de sus programadores se volvió loco ( no es su culpa ) y tomó todas las expresiones en la base de código y agregó corchetes al azar, antes de abandonar en el acto, despotricando sobre su incompetencia ( tampoco es su culpa ). Sin embargo, esta sería una solución fácil, por alguna razón no está utilizando el control de revisión ( no es su culpa ). Y por alguna razón, ninguno de los otros programadores quiere pasar por cada expresión para arreglar los corchetes no coincidentes ( por cierto, eso no es tu culpa ). Programadores en estos días, piensas para ti mismo. Tendrás que hacerlo tú mismo. ¡El horror! Se suponía que tales tareas estarían debajo de ti ...
La entrada será una sola línea, que contendrá una serie de corchetes izquierdos ( ( [ {
) y corchetes derechos ( ) ] }
). También puede, pero no siempre, contener comentarios ( /* */
) y literales de cadena ( " "
o ' '
) y varios números, letras o símbolos.
Habrá al menos un paréntesis (fuera de un comentario o literal de cadena) que no tenga un opuesto de corrosión (fuera de un comentario o literal de cadena). Por ejemplo, un errante }
sin un {
previo. Otro ejemplo: un (
que no tiene un )
después. Su programa reemplazará con un espacio el número mínimo de paréntesis necesarios para que coincidan los paréntesis.
Ejemplos:
(4 + (2 + 3))]
==> (4 + (2 + 3))
(el corchete al final)
][][[]]
==> [][[]]
(el corchete al comienzo)
("Hel(o!"))
==> ("Hel(o!")
(el paréntesis al final)
( /* )]*/
==> /* )]*/
(el paréntesis al comienzo)
{()]
==> ()
(el corchete y el corchete)
- La entrada se puede tomar de la forma más conveniente (STDIN, argumento de línea de comando, lectura de un archivo, etc.)
- Si hay más de una forma de resolver la falta de coincidencia con el mismo número de eliminaciones, es aceptable.
- Solo habrá desajustes entre paréntesis. Los literales de cadena y los comentarios siempre se formarán correctamente.
- El título proviene de este hilo SO
- Nunca habrá citas en comentarios, citas en citas, comentarios en comentarios o comentarios en citas.
Este es el código de golf, por lo que gana el número mínimo de bytes. Haga preguntas en los comentarios si la especificación no es clara.
("foo (\") bar")
)?
{{(})
debería ser { }
o equivalente, ya que el escenario de apertura implica que el código estaba funcionando para empezar, y {(})
cuenta como paréntesis no coincidentes en cada lenguaje de programación que conozco (es decir, "causa estasis"). Pero, entonces, ya escribí una respuesta, así que soy parcial.