Saya memiliki rekan kerja yang bekerja dari rumah setiap hari Selasa dan Kamis. Sekitar jam 8:00 pagi dia mengirimi kami pesan dengan teks berikut:
Halo hari ini saya sedang bekerja dari rumah
Untuk membebaskannya dari beban melakukan hal ini setiap hari dia tinggal di rumah, kami ingin mengotomatiskan tugas ini untuknya.
Tantangan
Tulis sesedikit mungkin byte kode yang:
- Menerima waktu saat ini: kode Anda dapat menerima nilai untuk tahun saat ini, bulan (1-12), hari bulan (1-31), jam (0-23) dan menit (0-59) dan hari dalam seminggu (Anda dapat memilih apakah angka ini dimulai dari 0 atau 1, dan jika 0/1 berarti hari Minggu, Senin atau hari lainnya); alternatifnya Anda mungkin menerima struktur seperti
Date
,DateTime
,Calendar
atau struktur-terkait waktu lainnya, jika bahasa Anda memungkinkan. Anda juga dapat menerima string dengan tanggal masukyyyyMMddHHmm
jika Anda mau, atau dua string terpisah untuk tanggal dan waktu, dan kemudian bilangan bulat dengan hari dalam seminggu. Merasa bebas. - Pengembalian dua konsisten truthy dan falsey nilai-nilai, menunjukkan jika pesan harus dikirim ke pekerjaan obrolan atau tidak.
Aturan
- Sepotong kode ini diasumsikan dipanggil secara berkala. Namun, periodisitas yang tepat tidak relevan.
- Nilai kebenaran harus dikembalikan jika hari dalam seminggu adalah Selasa atau Kamis dan pukul 8:00 pagi dengan margin kesalahan 10 menit (mulai dari 7:50 hingga 8:10).
- Nilai kebenaran harus dikirim hanya jika ini adalah pertama kalinya kode dipanggil antara jam-jam itu untuk hari yang ditentukan. Kami tidak ingin bot mengirim pesan yang sama beberapa kali berturut-turut. Cara Anda mengelola pembatasan ini sepenuhnya terserah Anda.
- Kode Anda mungkin merupakan program independen yang dijalankan berulang kali atau mungkin merupakan bagian dari kode yang lebih besar yang selalu berjalan. Pilihanmu.
- Anda dapat mengasumsikan bahwa tidak akan ada reboot di antara eksekusi kode.
- Anda dapat berasumsi bahwa tanggal tersebut akan selalu benar.
- Penjelasan tentang kode Anda dan khususnya tentang metode yang digunakan untuk mencapai kegigihan dianjurkan.
Contohnya
(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)
Ini adalah kode-golf , jadi semoga kode terpendek untuk setiap bahasa menang!
YYYYmmdd
dan waktu juga HHss
?