Ваша миссия, если вы решите принять его, чтобы добавить в минимальное количество скобок, скобки, и скобки , чтобы сделать данную строку (содержащую только круглые скобки, фигурные скобки, и скобки) имеют правильное соответствие скобок. Связи добавленных символов должны быть разорваны с помощью максимального расстояния между парными скобками. Вы должны вернуть только один правильный ответ, который соответствует этим двум правилам; Дальнейшие связи, если они существуют, могут быть разорваны любым удобным для вас способом.
Примеры:
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 символов (или их отсутствия): [](){}
(поддержка не требуется <>
)
Это код-гольф , выигрывает самая короткая программа. Стандартные лазейки запрещены, конечно .
источник
Ответы:
Питон 2 - 198
Я надеялся немного углубить понимание, но сейчас у меня не так много времени, чтобы по-настоящему испытать разные способы ведения дел.
OP не включал пример, подобный
{[([{}])]}{[
(со смежными группами), но если эта функциональность требуется или нет, это выводит правильный{[([{}])]}{[]}
источник
\t
) форматируется как 4 пробела при переполнении стека, но я на самом деле чередую табуляции и пробелы (вы можете сделать это для уровней отступов в Python 2, а не 3), поэтому первый уровень -[space]
второй,[tab]
третий -[tab][space]
четвертый[tab][tab]
. Ввод кода с пробелами дает мне 227 отсюда mothereff.in/byte-counter , и я считаю 10 вкладок, так что 227 - (3 * 10) = 197. Да, я думаю, что на самом деле я перебрал 1 путь назад, когда я разместил это.return r+[s[f(c)^1]for c in m]
сохранения байтов.Хаскелл, 513
Функция
h
. Предыдущая версия не давала правильных ответов"({{)["
и"({{)}}"
источник