Her Salı ve Perşembe günleri evden çalışan bir iş arkadaşım var. 08:00 civarında bize aşağıdaki metni içeren bir mesaj gönderir:
Merhaba bugün evden çalışıyorum
Onu evde kaldığı her gün bunu yapma yükünden kurtarmak için, bu görevi onun için otomatikleştirmek istiyoruz.
Meydan okuma
Mümkün olduğunca az bayt yazarak bir kod parçası yazın:
- Geçerli saati alır: Kodunuz, geçerli yıl, ay (1-12), ayın günü (1-31), saat (0-23) ve dakika (0-59) ve haftanın günü için değerler alabilir (bu sayının 0 veya 1'den başlayıp başlamayacağını ve 0/1 Pazar, Pazartesi veya başka bir gün anlamına geliyorsa); Alternatif olarak örneğin bir yapıyı alabilir
Date
,DateTime
,Calendar
ya da başka herhangi bir zaman ilgili yapı, dil izin veriyorsa. İsterseniz tarih içeren bir dizeyyyyMMddHHmm
ya da tarih ve saat için iki ayrı dize, ardından da haftanın günüyle bir tam sayı alabilirsiniz. Çekinmeyin. - İade iki tutarlı truthy ve Falsey mesajı çalışma sohbete gönderilen veya değil gerekiyorsa gösteren değerler.
kurallar
- Bu kod parçasının periyodik olarak çağrıldığı varsayılır. Bununla birlikte, kesin periyodiklik önemsizdir.
- Haftanın günü Salı veya Perşembe ise ve saat 10: 00'da (hata 7:50 - 8:10 dahil) hata payı ile doğruluk değeri döndürülmelidir.
- Doğruluk değeri yalnızca, kodun belirtilen gün için bu saatler arasında ilk kez çağrılması durumunda gönderilmelidir. Botun aynı mesajı arka arkaya birkaç kez göndermesini istemiyoruz. Bu kısıtlamayı yönetme şekliniz tamamen size bağlı olacaktır.
- Kodunuz art arda yürütülen bağımsız bir program olabilir veya her zaman çalışan daha büyük bir kodun parçası olabilir. Senin seçimin.
- Kodun yürütülmesi arasında yeniden başlatma olmayacağını varsayabilirsiniz.
- Tarihin her zaman doğru olacağını varsayabilirsiniz.
- Kodunuz ve özellikle kalıcılık elde etmek için kullanılan yöntem hakkında açıklamalar teşvik edilir.
Örnekler
(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)
Bu kod golf , bu yüzden her dil için en kısa kod kazanabilir!
YYYYmmdd
ve saat gibi alabilir miyim HHss
?