Завтра мозгу исполняется год! В честь его дня рождения мы проводим вечеринку по случаю дня рождения в стиле PPCG, на которой несколько пользователей публикуют вопросы, связанные с умом! Помогите нам отпраздновать! :)
Brain-flak - это эзотерический язык, который я написал, где все команды являются скобками, и все скобки должны быть полностью согласованы. Чтобы позаимствовать мое собственное определение :
Для этого вызова, «скобка» представляет собой любая из этих символов:
()[]{}<>.Пара скобок считается "совпавшей", если открывающая и закрывающая скобки расположены в правильном порядке и в них нет символов, например
() []{}Или если каждый подэлемент внутри него также совпадает.
[()()()()] {<[]>} (()())Субэлементы также могут быть вложены в несколько слоев.
[(){<><>[()]}<>()] <[{((()))}]>Строка считается «Полностью сопоставленной», если и только если:
Каждый отдельный символ - это скобка,
Каждая пара скобок имеет правильные открывающую и закрывающую скобки и в правильном порядке
В связи с празднованием первого дня рождения «мозговых штурмов» сегодняшняя задача состоит в том, чтобы взять несбалансированный набор скобок и определить, какие типы операций необходимы для того, чтобы сделать его корректным.
Например,
((недопустим код мозгового штурма, но если мы добавим))к нему, он становится(()), который полностью сбалансирован, и, следовательно, действителен мозговой зенит. Это делает этот вклад доступным .Точно так же
>}недействительно, но мы можем предвосхитить{<его, чтобы сделать{<>}, что допустимо. Это делает этот вклад ожидаемым .Некоторые входные данные немного сложнее. Например,
)][({нельзя сделать действительным только путем добавления или добавления. Но это можно сделать действительным,[(добавив и добавив})]. Таким образом, этот вход является одновременно prependable и appendable .Наконец, некоторые входные данные никогда не могут быть сделаны действительным кодом мозгового штурма с помощью любой комбинации добавления или добавления. Например,
(>никогда не может быть сделано действительным. (Предварительное<создание создает<(>, а добавление)создает(>), ни одно из которых не является действительным). Следовательно, этот ввод не является ни добавляемым, ни добавляемым.
Для сегодняшнего вызова вы должны написать программу или функцию, которая принимает строку в скобках и определяет, является ли строка
appendable
prependable
both
neither
Вы можете выбрать, какие значения вы используете для представления в каждом конкретном случае. Например, вывести 1, 2, 3, 4, или 'a', 'p', 'b', 'n', или 1, 'foo', 3.1415, -17, или как угодно. Пока каждый вывод отличается и согласован , это нормально. Однако вы должны четко указать, какой вывод соответствует какому случаю.
Вы можете вернуть это значение в любом удобном для вас формате (например, возврат из функции, печать в STDOUT, изменение аргументов, запись в файл и т. Д.).
Вы можете предположить, что входные данные никогда не будут действительными или пустыми.
Примеры
Следующие входные данные являются все возможными :
))
(((()()())))}
)>}]
()[]{}<>)
Это все можно добавить :
(({}{})
((((
([]()())(
{<<{
Это все оба :
))((
>()[(()){
>{
И это не все ни :
)(}
{(((()()()))>
[}
((((((((((>
((((((((((<>()]
Как обычно, это код-гольф , поэтому применяются стандартные лазейки, и выигрывает самый короткий ответ в байтах!
Эта задача особенно трудна в мозговых штурмах, поэтому максимальное количество брауни указывает на любой ответ, написанный в мозговых штурмах. :)
][это не appendable, так как вы ничего не можете добавить не может сделать его действительным. Точно так же это не предсказуемо. Это ... «вставляемый»! Вы можете вставить его в строку, чтобы сделать весь действительный Brainflak.
You can assume that the input will never be valid brain-flak or empty.
maximum brownie pointsЯ думаю, что предлагая максимальное количество очков для брауни и печенье вместо этого поощряет Brain Flaking к этому вызову больше, чем просто очки для брауни, поскольку я не думаю, что это вообще тривиально на любом языке, не говоря уже о Brain-Flak. : P