Brackets Brackets
Elementary
Ukrainian RU JA FR ES EN

"Чудово"! Вигукнула Софія. "Тепер у нас є пароль".

“Від чого саме пароль?” Саркастично зауважив Нікола.

"Незліченні скарби, неймовірні багатства! Золото! Срібло! Кремній! Гідравлічна рідина! Усе чого душа забажає!”

"І що ж ви будете робити з цим паролем який нам абсолютно нідочого?" Шкірився Нікола.

“Ох... Гаразд...”

Стефан заговорив. “Ну, оті двері мають клавіатуру. Але справа у тому, що дужки виглядають досить зламаними. Ми можемо спробувати полагодити їх, а потім спробувати ввести пароль?"

“Так! Це воно!” Вигукнула Софія.

Вам дані деякі вирази включаючі у себе цифри, дужки та оператори. Для цього завдання нам будуть потрібні тільки дужки. Дужки бувають 3 типів: "{}" "()" or "[]". Дужки використовуються для визначення меж або для обмеження деяких виразів. Якщо дужка відкрита, то це означае, що повинна бути друга дужка такого ж типу, яка її закриває. Дужки різних типів не повинні перетинатися. У цьому завданні ви повинні вирішити, корегувати вираз чи ні. Рішення повинне базуватися на правельності розташування дужок у виразі. Непереймайтесь нарахунок операторів та операндів.

Вхідні данні: Вираз, з різними типами дужок у вигляді рядка (unicode).

Вихідні данні: Вердикт правельності розташування дужок у заданому виразі у вигляді (True чи False).

Приклади:

checkio("((5+3)*2+1)") == True
checkio("{[(3+1)+2]+}") == True
checkio("(3+{1-1)}") == False
checkio("[1+1]+(2*2)-{3/3}") == True
checkio("(({[(((1)-2)+3)-3]/3}-3)") == False
checkio("2+3") == True

Як це використовується: Коли ти пишеш код чи комплекс виразів у математичному пакеті, то пропущена дужка може викликати сильну головну біль. Ця концепція може бути корисною для вашого власного IDE.

Передумови:
Тільки дужки типів ("{}" "()" or "[]"), цифри, та оператори ("+" "-" "*" "/").
0 < len(expression) < 103