Ваша миссия, если вы решите принять его, чтобы добавить в минимальное количество скобок, скобки, и скобки , чтобы сделать данную строку (содержащую только круглые скобки, фигурные скобки, и скобки) имеют правильное соответствие скобок. Связи добавленных символов должны быть разорваны с помощью максимального расстояния между парными скобками. Вы должны вернуть только один правильный ответ, который соответствует этим двум правилам; Дальнейшие связи, если они существуют, могут быть разорваны любым удобным для вас способом.
Примеры:
input output
// Empty String is a legal input
[ [] // Boring example
[()] [()] // Do nothing if there's nothing to be done
({{ ({{}}) // NOT (){}{} (0 + 0 + 0). Maximum distance is 4 + 2 + 0, ({{}})
[([{])]} {[([{}])]} // NOT [([])]{[([])]} or similar
Вы можете написать программу или функцию , получить входные данные через STDIN в качестве строкового аргумента вашей функции, которая возвращает выходные данные в виде строки или печатает их в STDOUT (или ближайшую альтернативу). При желании вы можете включить один завершающий символ новой строки в вывод.
Вы можете предположить, что входная строка состоит только из следующих 6 символов (или их отсутствия): [](){}
(поддержка не требуется <>
)
Это код-гольф , выигрывает самая короткая программа. Стандартные лазейки запрещены, конечно .