Votre objectif: étant donné une chaîne de crochets, affichez la distance Damerau-Levenshtein minimale requise pour transformer la chaîne d'entrée en une chaîne où les crochets sont équilibrés.
Contribution
La chaîne d'entrée ne contiendra que des crochets et aucun autre caractère. Autrement dit, il s'agit d'une combinaison de l'un des caractères de (){}[]<>
. Vous pouvez prendre l'entrée sous la forme d'une chaîne ou d'un tableau de caractères. Vous ne pouvez faire aucune autre hypothèse sur la chaîne d'entrée; il peut être arbitrairement long (jusqu'à la taille maximale prise en charge par votre langue), il peut être vide, les crochets peuvent déjà être équilibrés, etc.
Distance Damerau-Levenshtein
La distance Damerau-Levenshtein entre deux chaînes est le nombre minimum d'insertions, de suppressions, de substitutions à un seul caractère et de transpositions (permutation) de deux caractères adjacents.
Sortie
La sortie doit être la distance Damerau-Levenshtein minimale entre la chaîne d'entrée et une chaîne dans laquelle les parenthèses correspondent. La sortie doit être un nombre , pas la chaîne équilibrée résultante.
Une paire de crochets est considérée comme "assortie" si les crochets d'ouverture et de fermeture sont dans le bon ordre et ne contiennent aucun caractère, comme
()
[]{}
Ou si chaque sous-élément à l'intérieur de celui-ci est également mis en correspondance.
[()()()()]
{<[]>}
(()())
Les sous-éléments peuvent également être imbriqués plusieurs couches en profondeur.
[(){<><>[()]}<>()]
<[{((()))}]>
(Merci à @DJMcMayhem pour la définition)
Cas de test
Input Possible Balanced Output
Empty Empty 0
[](){}<> [](){}<> 0
[(){}<> [(){}<>] 1
[(]) []() 1
[[[[[[[[ [][][][] 4
(](<>}[>(}>><(>(({}] ()(<>)[(<><>){}] 7
>]{])< []{()} 3
([)}}>[ (){}<> 4
{<((<<][{{}>[<) <>(<<[]>{}>[]) 5
{><({((})>}}}{(}} {<><({()})>}{}{()} 4
(](<)>}[>(}>>{]<<(]] (<()<><<>()>>[])<()> 9
}})( {}() 2
(Merci à @WheatWizard d'avoir résolu la moitié des cas de test)
C'est du code-golf , le moins d'octets gagne!
Vos soumissions doivent pouvoir être testées, ce qui signifie qu'elles devraient produire un résultat pour chaque cas de test en moins d'une heure.
[<>]
ou []<>
ou<>