Su misión, si elige aceptarla, es agregar el número mínimo de paréntesis, llaves y corchetes para hacer que una cadena dada (que contiene solo paréntesis, llaves y corchetes) tenga la correspondencia correcta entre llaves. Los lazos de símbolos agregados deben romperse teniendo la distancia máxima entre llaves emparejadas. Debe devolver solo una respuesta correcta que coincida con estas dos reglas; Otros vínculos, en caso de que existan, pueden romperse de cualquier forma que lo considere conveniente.
Ejemplos:
input output
// Empty String is a legal input
[ [] // Boring example
[()] [()] // Do nothing if there's nothing to be done
({{ ({{}}) // NOT (){}{} (0 + 0 + 0). Maximum distance is 4 + 2 + 0, ({{}})
[([{])]} {[([{}])]} // NOT [([])]{[([])]} or similar
Puede escribir un programa o función , recibe la entrada a través de STDIN como un argumento de cadena para su función, que devuelve la salida como una cadena o la imprime en STDOUT (o la alternativa más cercana). Opcionalmente, puede incluir una nueva línea final en la salida.
Puede suponer que la cadena de entrada consta solo de los siguientes 6 caracteres (o falta de ellos): [](){}
(No es necesario admitir <>
)
Este es el código de golf , el programa más corto gana. Las lagunas estándar están prohibidas, por supuesto .