voodooism/bracket-parser

Checks if the brackets are opened and closed correctly in the given string

dev-master 2019-03-30 13:32 UTC

This package is auto-updated.

Last update: 2024-04-29 03:47:22 UTC


README

Государственное бюджетное общеобразовательное учреждение города Москвы "Школа No 1749", выйграла президентский грант, который она может потратить на улучшение процесса обучения школьников. Директор школы Габриенчук С.В. решил не покупать новые проекторы и планшеты для учащихся, а на все полученные деньги нанять вас, в качестве программиста, на пол года. Ваша задача, как программиста, - находить и автоматизировать рутинные процессы, которые происходят в школе. В самый свой первый рабочий день вы попали вольным слушателем на урок математики в 5Б, который проводила Потапова М.И. Это была женщина приятной наружности, ей было далеко за 60, но очень близко под 70, и она гордо носила титул Заслуженный учитель Российской Федерации, в виде медали на груди. Урок математики был самым что ни на есть обычным – Потапова М.И. писала на доске примеры вида: ((27 + 38) ÷ (77 – 69 x (54 x (26 - 3)))) x (11 x 12 – 17 + 18) – 36 ÷ (32 – 10 x 4) ученики выходили к доске и решали их. Всё бы ничего, да возникала одна и та же проблема: в силу своего преклонного возраста, Потапова М.И. не могла похвастаться хорошим зрением и частенько пропускала закрывающиеся скобки, когда придумывала примеры. Ученики и учительница тратили много времени на нахождение пропущенных скобок. Вы, как автоматизатор процессов, вызвались автоматизировать этот рутинный процесс. Вы решили написать библиотеку, которая будет принимать строку вида: (()()()()))((((()()()))(()()()(((())))))) И возвращать true, если строка корректна – все открытые скобки корректно открыты и закрыты, или же false в противном случае. Строка может включать символы “(“, “)”, “ ” (пробел), “\n” (перенос строки), “\t” (символ табуляции), “\r” (перенос каретки). Если же строка содержит что-то кроме перечисленных символов, то ваша библиотека должна выбрасывать исключение InvalidArgumentException. Ограничения на длину строки нет. Код с библиотекой должен быть размещён на github, а сама библиотека должна быть выложена на packagist.org