У мене є колега по роботі, який працює вдома кожен вівторок і четвер. Близько 8:00 ранку він надсилає нам повідомлення з таким текстом:
Привіт сьогодні я працюю з дому
Для того, щоб позбавити його від тягаря робити це кожного дня, коли він залишається вдома, ми хотіли б автоматизувати це завдання для нього.
Змагання
Напишіть якомога менше байтів фрагмент коду, який:
- Отримує поточний час: ваш код може отримувати значення для поточного року, місяця (1-12), дня місяця (1-31), години (0-23) та хвилини (0-59) та дня тижня (ви можете вибрати, чи починається це число від 0 або 1, і якщо 0/1 означає неділю, понеділок або будь-який інший день); в якості альтернативи ви можете отримати структуру , таку як
Date
,DateTime
,Calendar
або в будь-який інший час , пов'язаної структурою, якщо ваш язик дозволяє. Ви також можете отримати рядок з датою,yyyyMMddHHmm
якщо хочете, або два окремі рядки для дати та часу, а потім цілим числом із днем тижня. Почувайся вільно. - Повертає два послідовних значення truthy та falsey , вказуючи, чи потрібно повідомлення надіслати у робочий чат чи ні.
Правила
- Передбачається, що цей фрагмент коду періодично викликається. Точна періодичність, тим не менш, не має значення.
- Справжнє значення потрібно повернути, якщо день тижня - вівторок або четвер, а час - 8:00 ранку з похибкою 10 хвилин (від 7:50 до 8:10 включно).
- Значення "truthy" має бути надіслане, лише якщо воно вперше викликається між цими годинами протягом зазначеного дня. Ми не хочемо, щоб бот надсилав одне і те ж повідомлення кілька разів поспіль. Як ви керуєте цим обмеженням, буде повністю залежати від вас.
- Ваш код може бути незалежною програмою, що виконується повторно, або може бути частиною більшого коду, який завжди працює. Твій вибір.
- Ви можете припустити, що не буде перезавантажень між виконанням коду.
- Ви можете припустити, що дата завжди буде правильною.
- Заохочуються пояснення вашого коду та конкретно про метод, який використовується для досягнення наполегливості.
Приклади
(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
?