Mục tiêu của bạn: Đưa ra một chuỗi dấu ngoặc, xuất ra Khoảng cách tối thiểu Damerau-Levenshtein cần thiết để biến chuỗi đầu vào thành một chuỗi trong đó các dấu ngoặc được cân bằng.
Đầu vào
Chuỗi đầu vào sẽ chỉ chứa dấu ngoặc và không có ký tự nào khác. Đó là, nó là sự kết hợp của bất kỳ nhân vật nào trong đó (){}[]<>
. Bạn có thể lấy đầu vào là một chuỗi hoặc một mảng các ký tự. Bạn không thể đưa ra bất kỳ giả định nào khác về chuỗi đầu vào; nó có thể dài tùy ý (tối đa kích thước tối đa được hỗ trợ bởi ngôn ngữ của bạn), nó có thể trống, dấu ngoặc có thể đã được cân bằng, v.v.
Khoảng cách Damerau-Levenshtein
Khoảng cách Damerau-Levenshtein giữa hai chuỗi là số lần chèn, xóa, thay thế ký tự đơn và hoán vị (hoán đổi) tối thiểu của hai ký tự liền kề.
Đầu ra
Đầu ra phải là Khoảng cách tối thiểu của Damerau-Levenshtein giữa chuỗi đầu vào và chuỗi trong đó dấu ngoặc được khớp. Đầu ra phải là một số , không phải là chuỗi cân bằng kết quả.
Một cặp ngoặc được coi là "khớp" nếu dấu ngoặc mở và đóng theo đúng thứ tự và không có ký tự bên trong chúng, chẳng hạn như
()
[]{}
Hoặc nếu mọi yếu tố phụ bên trong nó cũng được khớp.
[()()()()]
{<[]>}
(()())
Các yếu tố phụ cũng có thể được lồng sâu một vài lớp.
[(){<><>[()]}<>()]
<[{((()))}]>
(Cảm ơn @DJMcMayhem cho định nghĩa)
Các trường hợp thử nghiệm
Input Possible Balanced Output
Empty Empty 0
[](){}<> [](){}<> 0
[(){}<> [(){}<>] 1
[(]) []() 1
[[[[[[[[ [][][][] 4
(](<>}[>(}>><(>(({}] ()(<>)[(<><>){}] 7
>]{])< []{()} 3
([)}}>[ (){}<> 4
{<((<<][{{}>[<) <>(<<[]>{}>[]) 5
{><({((})>}}}{(}} {<><({()})>}{}{()} 4
(](<)>}[>(}>>{]<<(]] (<()<><<>()>>[])<()> 9
}})( {}() 2
(Cảm ơn @WheatWizard đã giải quyết một nửa các trường hợp thử nghiệm)
Đây là mã golf , ít byte thắng nhất!
Bài nộp của bạn phải có thể kiểm tra được, có nghĩa là nó sẽ xuất kết quả cho mỗi trường hợp kiểm tra trong không quá một giờ.
[<>]
hay []<>
hay<>