Ви керівник проекту. Одного разу один з ваших програмістів з’їхав з розуму ( не з вашої вини ) і взяв усі вирази в кодовій базі і додав до них випадкові дужки, перш ніж виходити на місці, реверуючи про вашу некомпетентність ( також не з вашої вини ). Це було б легко виправити, однак, чомусь ви не використовуєте контроль редагування ( абсолютно не з вашої вини ). І чомусь ніхто з інших програмістів не хоче пройти кожен вираз, щоб виправити невідповідні дужки ( до речі, це не ваша вина ). Програмісти в ці дні, ви думаєте самі. Вам доведеться зробити це самостійно. Жах! Такі завдання повинні були бути під вами ...
Вхід буде одним рядком, який буде містити ряд лівих дужок ( ( [ {
) і правих дужок ( ) ] }
). Він також може, але не завжди, містити коментарі ( /* */
) та рядкові літерали ( " "
або ' '
) та різні цифри, літери чи символи.
Буде щонайменше одна дужка (поза коментуванням або рядковим літералом), яка не має протилежної корпоспондизації (поза коментуванням чи рядком). Наприклад, обман }
без {
попереднього. Інший приклад: a, (
який не має )
згодом. Ваша програма замінить на пробіл мінімальну кількість дужок, необхідних для узгодження дужок.
Приклади:
(4 + (2 + 3))]
==> (4 + (2 + 3))
(квадратна дужка в кінці)
][][[]]
==> [][[]]
(квадратна дужка на початку)
("Hel(o!"))
==> ("Hel(o!")
(дужка в кінці)
( /* )]*/
==> /* )]*/
(дужки на початку)
{()]
==> ()
(фігурна дужка і квадратний кронштейн)
- Введення даних може бути здійснено будь-яким зручним способом (STDIN, аргумент командного рядка, зчитування з файлу тощо)
- Якщо існує декілька способів вирішити невідповідність з однаковою кількістю видалень, прийнятний або один.
- У дужках будуть лише невідповідності. Рядок літератури та коментарі завжди будуть правильно сформовані.
- Заголовок походить із цього потоку SO
- Ніколи не буде жодних цитат у коментарях, цитат у цитатах, коментарів у коментарях чи коментарів у цитатах.
Це кодовий гольф, тому мінімальна кількість байтів виграє. Задавайте питання в коментарях, якщо специфікація не є чіткою.
("foo (\") bar")
)?
{{(})
повинен бути { }
або еквівалентним, оскільки сценарій відкриття передбачає, що код працював для початку, і {(})
вважається невідповідними дужками в кожній мові програмування, яку я знаю (тобто "викликає застій" ??). Але, тоді я вже написав відповідь, тож я упереджений.