Завтра -мозку завтра виповнюється рік! На честь цього дня народження ми проводимо день народження у стилі 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Я думаю, що пропонування максимум очок браузера та файлів cookie замість цього стимулює Brain-Flaking це завдання більше, ніж просто окуляри брауні, оскільки я не думаю, що це зовсім не банально на будь- якій мові, не кажучи вже про Brain-Flak. : P