我有一个同事在工作,每个星期二和星期四在家工作。在大约8:00 AM,他向我们发送了以下消息:
你好,今天我在家工作
为了减轻他每天待在家里的负担,我们希望为他自动化此任务。
挑战
编写尽可能少的字节的一段代码:
- 接收当前时间:您的代码可能会接收当前年,月(1-12),月(1-31),小时(0-23)和分钟(0-59)以及星期几的值(您可以选择此数字是从0还是1开始,如果0/1表示星期日,星期一或其他任何一天);另外,您可能会收到一个结构,如
Date
,DateTime
,Calendar
或者任何其他时间相关的结构,如果你的语言允许它。yyyyMMddHHmm
如果需要,您还可以接收带有日期的字符串,或者包含两个单独的日期和时间字符串,然后是带有星期几的整数。随便吧。 - 返回两个一致的真实和错误值,指示是否必须将消息发送到工作聊天室。
规则
- 假定这段代码是定期调用的。尽管如此,确切的周期是无关紧要的。
- 如果星期几是星期二或星期四,时间是8:00 AM,错误余量为10分钟(包括7:50至8:10),则必须返回真实值。
- 只有在指定日期的这些小时之间第一次调用代码时,才必须发送真实值。我们不希望机器人连续发送多次相同的消息。您管理此限制的方式完全取决于您。
- 您的代码可能是重复执行的独立程序,也可能是始终运行的较大代码的一部分。你的选择。
- 您可以假设在执行代码之间不会重新启动。
- 您可能会认为日期永远是正确的。
- 鼓励对代码进行解释,尤其是对用于实现持久性的方法的解释。
例子
(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
?