Здравствуйте, rosencrantz, Вы писали:
R>Это мифы и легенды. И регулярками пользуются, и парсеры пишут. В данной конкретной ситуации нет каких-то реальных причин, их не использовать. Можно додумать нереальные конечно.
Пользуются, только потом таким софтом пользоваться не приятно. К примеру, что будет если задать расписание:
"2021.12.12 00:11:99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999.5555"
Приложение не упадёт? А если строку увеличить до магабайта? Отработает корректно? Ну ладно, это строка не корректна. Возьмём корректный пример. Так... Длина строки не ограничена никак, тогда... Используем список:
"2021.12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12.12 00:11:22.999"
Таких ",12" можно задать, скажем, 12 миллионов. (Если, например, выдумать, что расписание генерируется скриптом на основе данных взятых из базы, то почему бы и нет?) Вы всё ещё уверены в своих регулярках?
R>>>Про тормоза не стоит так вопрос ставить. Тормозит не код, тормозит система в конкретном ворклоаде.
BFE>>Т.е. вы считаете, что для задачи которая оперирует с миллисекундами скорость не важна?
BFE>>Или, может, точно известно, что это не мобильное устройство и батарейку экономить не надо?
R>Глобальное потепление ещё забыли.
Если задача выполняется на сотнях тысячах компьютеров десятки лет...
R>Ваша мифическая система 99% времени занимается разбором расписаний и 1% времени — вычислениями таймстемпов следующих/предыдущих ивентов? Мы поэтому обсуждаем тормоза регулярок, да?
Допустим нам надо сэкономить память, потому что у нас десятки тысяч таких расписаний.
Как это сделать?
Есть простой способ: вместо того, чтобы хранить массивы _years, _months, ... можно хранить только строку расписания, а при каждом вызове для следующих/предыдущих ивентов разбирать эту строку в массивы лежащие на стеке. Тогда, если разбор быстрый — то всё получится, а вот если медленный — придётся переписывать.
BFE>>Автор ошибается. В условиях сказано:
BFE>>BFE>>класс должен быть эффективным и не использовать много памяти и ресурсов даже тогда, когда в расписании задано много значений.
R>Не использовать много памяти — это сколько? Много значений — это сколько? Я из написанного этого прочитать не могу, поэтому интерпретирую как "используйте здравый смысл". Вы прямо микроконтроллер c 4кб памяти разглядели?
Тут без включения телепатии и знания области в которой работает контора узнать не возможно. Однако, обычно, известно что делает контора в которую пытаешься устроится, поэтому можно сделать некоторые предположения.
R>>>>>Чтобы можно было красиво ругаться "что qwerty не выглядит как число от 1 до 12".
BFE>>>>И что с этим потом делать?
R>>>Падать с эксшепшном "плохое выражение: qwerty не выглядит как число от 1 до 12" вместо "плохое выражение".
BFE>>Не стоит забывать, что это тестовое задание, а не рабочий код.
R>"Ну это же тестовое задание, поэтому плохой код допустим",
В нормальной программе падение вообще не допустимо.
R>"ну у нас же дедлайн завтра, поэтому плохой код допустим", "демо через 15 минут, поэтому я буду коммитить в мастер без пулриквестов".
К чему это написано?
R>Это ведь каким токсичным засранцем надо быть, чтобы требовать возможности проговорить требования и послать всех подальше, если отказываются обсуждать, да? Прикинуть сколько займёт нормальное решение задачи — за которое не стыдно, которое можно читать и расширять, удивиться, что выходит неделя и снова — либо предложить нанимающей компании оплатить это по адекватному рейту, или послать нафиг компанию, если отказываются? Это ведь совсем отморозком нужно быть, в цивилизованном обществе 21 века у нас так не принято, да?
Ну да, компания "токсичная". С такими просто: сначала договариваешься о такой зарплате, при которой сделать бесплатный тест не лень, а потом делаешь тест. Только так, не наоборот. Впрочем, в таких компаниях как только слышат о том, сколько хочешь получать, так сразу отказывают, без тестового задания.
R>Но автор статьи не такой — товарищ согласился забесплатно без нормальной постановки задачи что-то изобразить за 1 день.
Автор тренируется перед началом нормального поиска. Обычное дело.