Twój cel: Biorąc pod uwagę ciąg nawiasów, przekaż minimalną odległość Damerau-Levenshtein wymaganą do przekształcenia ciągu wejściowego w ciąg, w którym nawiasy są zrównoważone.
Wkład
Łańcuch wejściowy będzie zawierał tylko nawiasy kwadratowe i żadnych innych znaków. Oznacza to, że jest to kombinacja dowolnych znaków w (){}[]<>
. Możesz wziąć dane wejściowe jako ciąg znaków lub tablicę znaków. Nie możesz przyjmować żadnych innych założeń dotyczących ciągu wejściowego; może być dowolnie długi (do maksymalnego rozmiaru obsługiwanego przez Twój język), może być pusty, nawiasy mogą być już zrównoważone itp.
Odległość Damerau-Levenshtein
Odległość Damerau-Levenshtein między dwoma łańcuchami to minimalna liczba wstawek, usunięć, podstawień pojedynczych znaków i transpozycji (zamiany) dwóch sąsiednich znaków.
Wydajność
Dane wyjściowe powinny być minimalną odległością Damerau-Levenshtein między łańcuchem wejściowym a łańcuchem, w którym pasują nawiasy. Wyjście powinno być liczbą , a nie wynikowym zbalansowanym łańcuchem.
Para nawiasów jest uważana za „dopasowaną”, jeśli nawiasy otwierające i zamykające są w odpowiedniej kolejności i nie zawierają w sobie znaków, takich jak
()
[]{}
Lub jeśli każdy podelement wewnątrz jest również dopasowany.
[()()()()]
{<[]>}
(()())
Podelementy można również zagnieżdżać na kilku warstwach.
[(){<><>[()]}<>()]
<[{((()))}]>
(Podziękowania dla @DJMcMayhem za definicję)
Przypadki testowe
Input Possible Balanced Output
Empty Empty 0
[](){}<> [](){}<> 0
[(){}<> [(){}<>] 1
[(]) []() 1
[[[[[[[[ [][][][] 4
(](<>}[>(}>><(>(({}] ()(<>)[(<><>){}] 7
>]{])< []{()} 3
([)}}>[ (){}<> 4
{<((<<][{{}>[<) <>(<<[]>{}>[]) 5
{><({((})>}}}{(}} {<><({()})>}{}{()} 4
(](<)>}[>(}>>{]<<(]] (<()<><<>()>>[])<()> 9
}})( {}() 2
(Dzięki @WheatWizard za rozwiązanie połowy przypadków testowych)
To jest golf golfowy , wygrywa najmniej bajtów!
Twoje zgłoszenia powinny być możliwe do przetestowania, co oznacza, że powinny dać wynik dla każdego przypadku testowego w nie więcej niż godzinę.
[<>]
czy []<>
też<>