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