Tujuan Anda: Diberikan serangkaian tanda kurung, output Jarak Damerau-Levenshtein minimum diperlukan untuk mengubah string input menjadi string di mana tanda kurung seimbang.
Memasukkan
String input hanya akan berisi tanda kurung dan tidak ada karakter lain. Artinya, itu adalah kombinasi dari salah satu karakter di (){}[]<>
. Anda dapat mengambil input baik sebagai string atau array karakter. Anda tidak boleh membuat asumsi lain tentang string input; mungkin panjangnya sewenang-wenang (hingga ukuran maksimum yang didukung oleh bahasa Anda), mungkin kosong, kurung mungkin sudah seimbang, dll.
Damerau-Levenshtein Jarak
Jarak Damerau-Levenshtein antara dua string adalah jumlah minimum penyisipan, penghapusan, pergantian karakter tunggal, dan transposisi (swapping) dari dua karakter yang berdekatan.
Keluaran
Output harus Jarak Damerau-Levenshtein minimum antara string input dan string di mana tanda kurung cocok. Output harus berupa angka , bukan string seimbang yang dihasilkan.
Sepasang tanda kurung dianggap "cocok" jika tanda kurung buka dan tutup berada dalam urutan yang benar dan tidak memiliki karakter di dalamnya, seperti
()
[]{}
Atau jika setiap sub-elemen di dalamnya juga cocok.
[()()()()]
{<[]>}
(()())
Sub-elemen juga dapat disarangkan beberapa lapisan.
[(){<><>[()]}<>()]
<[{((()))}]>
(Terima kasih kepada @DJMcMayhem untuk definisinya)
Uji Kasus
Input Possible Balanced Output
Empty Empty 0
[](){}<> [](){}<> 0
[(){}<> [(){}<>] 1
[(]) []() 1
[[[[[[[[ [][][][] 4
(](<>}[>(}>><(>(({}] ()(<>)[(<><>){}] 7
>]{])< []{()} 3
([)}}>[ (){}<> 4
{<((<<][{{}>[<) <>(<<[]>{}>[]) 5
{><({((})>}}}{(}} {<><({()})>}{}{()} 4
(](<)>}[>(}>>{]<<(]] (<()<><<>()>>[])<()> 9
}})( {}() 2
(Terima kasih kepada @WheatWizard untuk memecahkan setengah dari kasus uji)
Ini adalah kode-golf , byte terkecil menang!
Kiriman Anda harus dapat diuji, artinya harus menghasilkan hasil untuk setiap kasus uji dalam waktu tidak lebih dari satu jam.
[<>]
atau []<>
atau<>