Срок ответа по SLA в рабочие часы

Задача по программированию с проверкой онлайн

Сложность
Сложная
Языки
Python
JavaScript
TypeScript
Java
Go
Темы
Даты и время
Разбор и проверка данных
Исключения

Служба поддержки обещает ответить на обращение за sla_minutes рабочих минут. Дан момент открытия opened ("YYYY-MM-DD HH:MM"), график недели hours — ровно 7 строк с понедельника по воскресенье — и список праздников holidays ("YYYY-MM-DD", в праздник служба закрыта весь день). Строка графика пустая (выходной) или содержит окна "HH:MM-HH:MM" через запятую, например "09:00-13:00,14:00-18:00"; окно открыто с начала включительно до конца не включая.

Верните срок — самый ранний момент, к которому от opened набралось ровно sla_minutes рабочих минут, в формате "YYYY-MM-DD HH:MM". Если отсчёт заканчивается ровно в конце окна, срок — этот конец (например "18:00"), а не начало следующего окна. При sla_minutes = 0 срок — сам opened. Календарь григорианский, часовых поясов нет; sla_minutes не больше 100000.

Сообщите об ошибке (бросьте исключение, в Go верните error), если sla_minutes < 0, строк графика не 7, окно записано не в формате, часы не от 00 до 23 или минуты не от 00 до 59, окно пустое или начинается раньше конца предыдущего окна того же дня, дата не в формате "YYYY-MM-DD" или не существует, opened не в формате, а также если sla_minutes > 0, а в графике нет ни одного окна.

Пример: "2024-03-08 16:30" (пятница), 240, будни "09:00-13:00,14:00-18:00", выходные "", [] → "2024-03-11 11:30".


Источник: задача CodeShare

Решить онлайнБесплатно и без регистрации: пишете код в браузере и проверяете его тестами (без аккаунта — несколько задач в день).

Ещё задачи

Все задачи для тренировки