J'ai un collègue au travail qui travaille à domicile tous les mardis et jeudis. Vers 8h00, il nous envoie un message avec le texte suivant:
Bonjour, je travaille de la maison
Afin de le soulager du fardeau de le faire chaque jour qu'il reste à la maison, nous aimerions automatiser cette tâche pour lui.
Le défi
Écrivez le moins d'octets possible un morceau de code qui:
- Reçoit l'heure actuelle: votre code peut recevoir des valeurs pour l'année en cours, le mois (1-12), le jour du mois (1-31), l'heure (0-23) et les minutes (0-59) et le jour de la semaine (vous pouvez choisir si ce nombre commence à 0 ou 1, et si 0/1 signifie dimanche, lundi ou tout autre jour); Sinon , vous pouvez recevoir une structure telle que
Date
,DateTime
,Calendar
ou toute autre structure liée à temps, si votre langue permet. Vous pouvez également recevoir une chaîne avec la dateyyyyMMddHHmm
si vous le souhaitez, ou deux chaînes distinctes pour la date et l'heure, puis un entier avec le jour de la semaine. N'hésitez pas. - Renvoie deux valeurs de vérité et de falsey cohérentes , indiquant si le message doit être envoyé au chat professionnel ou non.
Règles
- Ce morceau de code est supposé être invoqué périodiquement. La périodicité exacte est néanmoins sans importance.
- La valeur véridique doit être retournée si le jour de la semaine est le mardi ou le jeudi et l'heure est à 8h00 avec une marge d'erreur de 10 minutes (de 7h50 à 8h10 inclus).
- La valeur véridique ne doit être envoyée que si c'est la première fois que le code est invoqué entre ces heures pour le jour spécifié. Nous ne voulons pas que le bot envoie le même message plusieurs fois de suite. La façon dont vous gérerez cette restriction dépendra entièrement de vous.
- Votre code peut être un programme indépendant exécuté de manière répétée ou il peut faire partie d'un code plus volumineux qui est toujours en cours d'exécution. Votre choix.
- Vous pouvez supposer qu'il n'y aura pas de redémarrage entre les exécutions du code.
- Vous pouvez supposer que la date sera toujours correcte.
- Des explications sur votre code et en particulier sur la méthode utilisée pour obtenir la persistance sont encouragées.
Exemples
(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)
C'est le code-golf , donc le code le plus court pour chaque langue peut gagner!
YYYYmmdd
et l'heure aussi HHss
?