Mam w pracy kolegę, który pracuje z domu w każdy wtorek i czwartek. Około 8:00 wysyła nam wiadomość z następującym tekstem:
Witam dzisiaj Pracuję z domu
Aby uwolnić go od ciężaru wykonywania codziennych czynności w domu, chcielibyśmy zautomatyzować to zadanie.
Wyzwanie
Wpisz jak najmniej bajtów fragmentu kodu, który:
- Odbiera bieżącą godzinę: Twój kod może odbierać wartości dla bieżącego roku, miesiąca (1-12), dnia miesiąca (1-31), godziny (0-23) i minuty (0-59) oraz dnia tygodnia (możesz wybrać, czy ten numer zaczyna się od 0 czy 1, a jeśli 0/1 oznacza niedzielę, poniedziałek lub inny dzień); alternatywnie można otrzymać struktury takie jak
Date
,DateTime
,Calendar
lub jakakolwiek inna struktura czasu powiązanymi, jeżeli język na to pozwala. Możesz również otrzymać ciąg z datą,yyyyMMddHHmm
jeśli chcesz, lub dwa osobne ciągi dla daty i godziny, a następnie liczbę całkowitą z dniem tygodnia. Nie krępuj się. - Zwraca dwie spójne wartości true i falsey , wskazując, czy wiadomość musi zostać wysłana do czatu roboczego, czy nie.
Zasady
- Zakłada się, że ten fragment kodu jest okresowo wywoływany. Dokładna okresowość nie ma jednak znaczenia.
- Prawdziwa wartość musi zostać zwrócona, jeśli dniem tygodnia jest wtorek lub czwartek, a godzina 8:00 z marginesem błędu wynoszącym 10 minut (od 7:50 do 8:10 włącznie).
- Prawdziwa wartość musi zostać wysłana tylko wtedy, gdy kod jest wywoływany po raz pierwszy między tymi godzinami dla określonego dnia. Nie chcemy, aby bot wysyłał tę samą wiadomość kilka razy z rzędu. Sposób zarządzania tym ograniczeniem zależy wyłącznie od Ciebie.
- Twój kod może być niezależnym programem wykonywanym wielokrotnie lub może być częścią większego kodu, który zawsze działa. Twój wybór.
- Możesz założyć, że między uruchomieniami kodu nie będzie restartów.
- Możesz założyć, że data będzie zawsze poprawna.
- Zalecane są objaśnienia dotyczące Twojego kodu, a zwłaszcza metody zastosowanej do uzyskania trwałości.
Przykłady
(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)
To jest golf golfowy , więc wygra najkrótszy kod dla każdego języka!
YYYYmmdd
również godzinę HHss
?