У меня есть коллега на работе, который работает дома каждый вторник и четверг. Около 8:00 утра он отправляет нам сообщение со следующим текстом:
Привет сегодня работаю из дома
Чтобы избавить его от бремени делать это каждый день, когда он остается дома, мы хотели бы автоматизировать эту задачу для него.
Соревнование
Запишите как можно меньше байт кода, который:
- Получает текущее время: ваш код может получать значения для текущего года, месяца (1-12), дня месяца (1-31), часа (0-23) и минуты (0-59) и дня недели. (вы можете выбрать, будет ли этот номер начинаться с 0 или 1, и если 0/1 означает воскресенье, понедельник или любой другой день); в качестве альтернативы вы можете получить структуру , такую как
Date
,DateTime
,Calendar
или в любое другое время , связанной структурой, если ваш язык позволяет. Вы также можете получить строку с датой в,yyyyMMddHHmm
если хотите, или две отдельные строки для даты и времени, а затем целое число с днем недели. Не стесняйтесь. - Возвращает два непротиворечивых значения true и falsey , указывающие, нужно ли отправлять сообщение в рабочий чат или нет.
правила
- Предполагается, что этот фрагмент кода вызывается периодически. Тем не менее точная периодичность не имеет значения.
- Истинное значение должно быть возвращено, если днем недели является вторник или четверг, а время - 8:00 с погрешностью 10 минут (с 7:50 до 8:10 включительно).
- Значение truey должно быть отправлено только в том случае, если код впервые вызывается между этими часами для указанного дня. Мы не хотим, чтобы бот отправлял одно и то же сообщение несколько раз подряд. То, как вы справитесь с этим ограничением, будет зависеть только от вас.
- Ваш код может быть независимой программой, выполняемой повторно, или он может быть частью большого кода, который всегда выполняется. Твой выбор.
- Вы можете предположить, что между выполнениями кода перезагрузок не будет.
- Вы можете предположить, что дата всегда будет правильной.
- Пояснения о вашем коде и особенно о методе, используемом для достижения постоянства, приветствуются.
Примеры
(Week starts on Monday: 1, the following invokations will be made in succession)
2018,08,27,08,00,1 = falsey (not Tuesday or Thursday)
2018,08,28,07,45,2 = falsey (out of hours)
2018,08,28,07,55,2 = truthy (first time invoked this day at the proper hours)
2018,08,28,08,05,2 = falsey (second time invoked this day at the proper hours)
2018,08,28,08,15,2 = falsey (out of hours)
2018,08,29,08,00,3 = falsey (not Tuesday or Thursday)
2018,08,29,18,00,3 = falsey (not Tuesday or Thursday)
2018,08,30,07,49,4 = falsey (out of hours)
2018,08,30,07,50,4 = truthy (first time invoked this day at the proper hours)
2018,08,30,07,50,4 = falsey (second time invoked this day at the proper hours)
2018,08,30,08,10,4 = falsey (third time invoked this day at the proper hours)
2018,08,30,08,11,4 = falsey (out of hours)
2018,09,04,08,10,2 = truthy (first time invoked this day at the proper hours)
Это код-гольф , поэтому может выиграть самый короткий код для каждого языка!
YYYYmmdd
и время HHss
?