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 .
fuente
Respuestas:
Python 2 - 198
Tenía la esperanza de obtener algunas de las comprensiones un poco más, pero no tengo mucho tiempo en este momento para probar realmente diferentes formas de hacer las cosas.
El OP no incluyó un ejemplo como
{[([{}])]}{[
(con grupos adyacentes), pero si se requiere o no esta funcionalidad, esto genera el resultado correcto{[([{}])]}{[]}
fuente
\t
) se formatean como 4 espacios en el desbordamiento de la pila, pero en realidad estoy alternando pestañas y espacios (puede hacer esto para niveles de sangría en Python 2, no 3), por lo que el primer nivel es el[space]
segundo es el[tab]
tercero es el[tab][space]
cuarto[tab][tab]
. Ingresar el código con espacios me da 227 desde aquí mothereff.in/byte-counter , y cuento 10 pestañas así que 227 - (3 * 10) = 197. Huh, supongo que en realidad conté de más por 1 camino atrás cuando publicado esto.return r+[s[f(c)^1]for c in m]
para guardar bytes.Haskell, 513
La funcion
h
. La versión anterior no dio respuestas correctas para"({{)["
y"({{)}}"
fuente