Следующие запуски по расписанию в стиле cron
Задача по программированию с проверкой онлайн
- Сложность
- Сложная
- Языки
- Python
- JavaScript
- TypeScript
- Java
- Go
- Темы
- Даты и время
- Разбор и проверка данных
- Исключения
Расписание задано строкой expression из пяти полей через один пробел: минута (0–59), час (0–23), день месяца (1–31), месяц (1–12), день недели (0–6, 0 — воскресенье). Поле — это список элементов через запятую; элемент — * (все значения поля), число a, диапазон a-b (a ≤ b), а также */k или a-b/k — значения от начала, взятые с шагом k ≥ 1. Числа записываются одной или двумя цифрами и лежат в пределах поля.
Момент подходит, если его минута, час и месяц входят в свои поля и одновременно день месяца и день недели входят в свои (в отличие от классического cron, нужны оба). Календарь григорианский, часовых поясов нет. Дан момент after вида "YYYY-MM-DD HH:MM" (год от 1900 до 2100) и число n ≥ 0. Верните первые n подходящих моментов строго позже after по возрастанию, в том же формате. Ищите только до конца четвёртого года после года after (до "Y+4-12-31 23:59" включительно); если подходящих моментов там меньше n, верните найденные.
Если полей не пять (лишний пробел тоже ошибка), элемент записан неверно, значение вне пределов, a > b, шаг 0 или шаг после одиночного числа, если after не в формате или не существует, или n < 0 — сообщите об ошибке: бросьте исключение, в Go верните error.
Пример: "30 9 * * 1-5", "2024-03-08 10:00", 3 → ["2024-03-11 09:30", "2024-03-12 09:30", "2024-03-13 09:30"].
Источник: задача CodeShare