Ich habe einen Kollegen bei der Arbeit, der jeden Dienstag und Donnerstag von zu Hause aus arbeitet. Gegen 8:00 Uhr schickt er uns eine Nachricht mit folgendem Text:
Hallo, heute arbeite ich von zu Hause aus
Um ihn davon zu entlasten, dass er jeden Tag zu Hause bleibt, möchten wir diese Aufgabe für ihn automatisieren.
Die Herausforderung
Schreiben Sie in möglichst wenigen Bytes einen Code, der:
- Erhält die aktuelle Uhrzeit: Ihr Code erhält möglicherweise Werte für das aktuelle Jahr, den Monat (1-12), den Tag des Monats (1-31), die Stunde (0-23) und die Minute (0-59) sowie den Wochentag (Sie können wählen, ob diese Zahl bei 0 oder 1 beginnt und ob 0/1 Sonntag, Montag oder einen anderen Tag bedeutet); alternativ können Sie eine Struktur erhalten, wie
Date
,DateTime
,Calendar
oder andere zeitbezogene Struktur, wenn Ihre Sprache zulässt. Sie können auch eine Zeichenfolge mit demyyyyMMddHHmm
gewünschten Datum oder zwei separate Zeichenfolgen für Datum und Uhrzeit und anschließend eine Ganzzahl mit dem Wochentag erhalten. Fühlen Sie sich frei. - Gibt zwei konsistente Wahrheit und Falschheit zurück , die angeben, ob die Nachricht an den werden muss oder nicht.
Regeln
- Es wird davon ausgegangen, dass dieser Code regelmäßig aufgerufen wird. Die genaue Periodizität ist jedoch unerheblich.
- Der Wahrheitswert muss zurückgegeben werden, wenn der Wochentag Dienstag oder Donnerstag ist und die Uhrzeit 8:00 Uhr mit einer Fehlerspanne von 10 Minuten (von 7:50 bis einschließlich 8:10 Uhr) ist.
- Der Wahrheitswert muss nur gesendet werden, wenn der Code zum ersten Mal zwischen diesen Stunden für den angegebenen Tag aufgerufen wird. Wir möchten nicht, dass der Bot dieselbe Nachricht mehrmals hintereinander sendet. Die Art und Weise, wie Sie mit dieser Einschränkung umgehen, liegt ganz bei Ihnen.
- Ihr Code kann ein unabhängiges Programm sein, das wiederholt ausgeführt wird, oder er kann Teil eines größeren Codes sein, der immer ausgeführt wird. Deine Entscheidung.
- Sie können davon ausgehen, dass zwischen den Ausführungen des Codes keine Neustarts stattfinden.
- Sie können davon ausgehen, dass das Datum immer korrekt ist.
- Erklärungen zu Ihrem Code und speziell zu der Methode, mit der die Persistenz erreicht wird, werden empfohlen.
Beispiele
(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)
Das ist Code-Golf , also kann der kürzeste Code für jede Sprache gewinnen!
YYYYmmdd
und die Uhrzeit auch nehmen HHss
?