Su objetivo: dada una cadena de paréntesis, genere la distancia mínima Damerau-Levenshtein requerida para convertir la cadena de entrada en una cadena donde los corchetes estén equilibrados.
Entrada
La cadena de entrada solo contendrá paréntesis y ningún otro carácter. Es decir, es una combinación de cualquiera de los personajes en (){}[]<>
. Puede tomar la entrada como una cadena o una matriz de caracteres. No puede hacer otras suposiciones sobre la cadena de entrada; puede ser arbitrariamente largo (hasta el tamaño máximo admitido por su idioma), puede estar vacío, los corchetes ya pueden estar equilibrados, etc.
Damerau-Levenshtein Distancia
La distancia Damerau-Levenshtein entre dos cadenas es el número mínimo de inserciones, eliminaciones, sustituciones de un solo carácter y transposiciones (intercambio) de dos caracteres adyacentes.
Salida
La salida debe ser la distancia mínima de Damerau-Levenshtein entre la cadena de entrada y una cadena en la que coinciden los corchetes. La salida debe ser un número , no la cadena equilibrada resultante.
Un par de paréntesis se considera "coincidente" si los paréntesis de apertura y cierre están en el orden correcto y no tienen caracteres dentro de ellos, como
()
[]{}
O si cada subelemento dentro de él también coincide.
[()()()()]
{<[]>}
(()())
Los subelementos también pueden anidarse en varias capas de profundidad.
[(){<><>[()]}<>()]
<[{((()))}]>
(Gracias a @DJMcMayhem por la definición)
Casos de prueba
Input Possible Balanced Output
Empty Empty 0
[](){}<> [](){}<> 0
[(){}<> [(){}<>] 1
[(]) []() 1
[[[[[[[[ [][][][] 4
(](<>}[>(}>><(>(({}] ()(<>)[(<><>){}] 7
>]{])< []{()} 3
([)}}>[ (){}<> 4
{<((<<][{{}>[<) <>(<<[]>{}>[]) 5
{><({((})>}}}{(}} {<><({()})>}{}{()} 4
(](<)>}[>(}>>{]<<(]] (<()<><<>()>>[])<()> 9
}})( {}() 2
(Gracias a @WheatWizard por resolver la mitad de los casos de prueba)
Este es el código de golf , ¡la menor cantidad de bytes gana!
Sus envíos deben ser comprobables, lo que significa que debe generar un resultado para cada caso de prueba en no más de una hora.
[<>]
o []<>
o<>