ฉันมีเพื่อนร่วมงานที่ทำงานที่บ้านทุกวันอังคารและวันพฤหัสบดี เมื่อเวลาประมาณ 8:00 น. เขาส่งข้อความพร้อมข้อความต่อไปนี้ถึงเรา:
สวัสดีวันนี้ฉันทำงานจากที่บ้าน
เพื่อบรรเทาเขาจากภาระในการทำเช่นนี้ทุกวันที่เขาอยู่บ้านเราต้องการทำงานนี้ให้เขาโดยอัตโนมัติ
ความท้าทาย
เขียนเป็นส่วนน้อยของรหัสที่:
- รับเวลาปัจจุบัน: รหัสของคุณอาจรับค่าสำหรับปีปัจจุบันเดือน (1-12) วันเดือน (1-31) ชั่วโมง (0-23) และนาที (0-59) และวันในสัปดาห์ (คุณสามารถเลือกได้ว่าหมายเลขนี้จะเริ่มต้นจาก 0 หรือ 1 และถ้า 0/1 หมายถึงวันอาทิตย์วันจันทร์หรือวันอื่น ๆ ) ฉะนั้นคุณอาจได้รับโครงสร้างเช่น
Date
,DateTime
,Calendar
หรือโครงสร้างเวลาอื่น ๆ ที่เกี่ยวข้องถ้าภาษาของคุณให้มัน นอกจากนี้คุณยังสามารถรับสตริงที่มีวันที่yyyyMMddHHmm
หากคุณต้องการหรือสองสตริงแยกกันสำหรับวันที่และเวลาแล้วจำนวนเต็มกับวันของสัปดาห์ ตามสบาย. - ส่งคืนค่าความจริงและค่าเท็จที่สอดคล้องกันสองค่าซึ่งระบุว่าจะต้องส่งข้อความไปยังแชทที่ทำงานหรือไม่
กฎระเบียบ
- โค้ดส่วนนี้จะถูกเรียกใช้เป็นระยะ ระยะเวลาที่แน่นอนจะไม่เกี่ยวข้องอย่างไรก็ตาม
- ต้องส่งคืนค่าความจริงหากวันในสัปดาห์คือวันอังคารหรือวันพฤหัสบดีและเวลาคือ 8:00 น. โดยมีระยะเวลาข้อผิดพลาด 10 นาที (ตั้งแต่ 7:50 ถึง 8:10 น.)
- ค่าความจริงจะต้องส่งเฉพาะในกรณีที่เป็นครั้งแรกที่มีการเรียกใช้รหัสระหว่างชั่วโมงเหล่านั้นสำหรับวันที่ระบุ เราไม่ต้องการให้บอตส่งข้อความเดียวกันหลายครั้งติดต่อกัน วิธีที่คุณจัดการข้อ จำกัด นี้จะขึ้นอยู่กับคุณทั้งหมด
- รหัสของคุณอาจเป็นโปรแกรมอิสระที่ดำเนินการซ้ำ ๆ หรืออาจเป็นส่วนหนึ่งของรหัสที่ใหญ่กว่าที่ใช้งานอยู่เสมอ ตัวเลือกของคุณ.
- คุณอาจคิดว่าจะไม่มีการรีบูตระหว่างการประมวลผลของรหัส
- คุณอาจคิดว่าวันที่จะถูกต้องเสมอ
- คำอธิบายเกี่ยวกับรหัสของคุณและโดยเฉพาะเกี่ยวกับวิธีการที่ใช้เพื่อให้บรรลุความเพียรได้รับการสนับสนุน
ตัวอย่าง
(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)
นี่คือรหัส - กอล์ฟดังนั้นอาจเป็นรหัสที่สั้นที่สุดสำหรับแต่ละภาษาที่ชนะ!
YYYYmmdd
กับเวลาได้HHss
หรือไม่?