บทนำ
ที่นี่ในเยอรมนีเวลาในการพิจารณาคดีมีความเข้มงวดมาก หากคุณทำงาน 6 ชั่วโมงขึ้นไปต่อวันคุณต้องหยุดพักอย่างน้อย 30 นาที ถ้าคุณทำงาน 9 ชั่วโมงขึ้นไปคุณจะต้องหยุดพัก 45 นาที หากคุณทำงานน้อยกว่า 6 ชั่วโมงคุณไม่ต้องหยุดพัก
แน่นอนว่าคุณสามารถแบ่งช่วงพักเหล่านั้นได้ แต่แต่ละส่วนจะต้องมีความยาวอย่างน้อย 15 นาที
ความท้าทาย
ในการท้าทายนี้คุณจะได้รับรายการช่วงเวลาทำงานและคุณต้องตรวจสอบว่ามีการหยุดพักเพียงพอหรือไม่โดยใช้กฎต่อไปนี้:
อนุญาตw
เป็นเวลาทำงานเป็นชั่วโมง:
w < 6 -> No breaks needed
6 <= w < 9 -> 30 minute break needed
w >= 9 -> 45 minute break needed
นอกจากนี้การพักแต่ละครั้งจะต้องมีความยาวอย่างน้อย 15 นาที นอกจากนี้คุณสามารถหยุดพักมากกว่าที่จำเป็น นั่นคือค่าทั้งหมด "อย่างน้อย"
อินพุต
ข้อมูลที่คุณป้อนจะเป็นรายการของช่วงเวลาทำงาน รูปแบบที่แน่นอนนั้นขึ้นอยู่กับคุณ แต่จะต้องมีค่าเวลาเป็นชั่วโมงและนาทีเท่านั้น
ตัวอย่าง:
รูปแบบที่นี่คือรายการของสิ่งอันดับในขณะที่แต่ละสิ่งอันดับแสดงถึงระยะเวลาการทำงาน องค์ประกอบแรกใน tuple จะเป็นเวลาเริ่มต้นส่วนที่สองจะเป็นเวลาสิ้นสุด
[("07:00","12:00"),("12:30","15:30"),("15:45","17:15")]
ส่งผลให้เวลาทำงานทั้งหมด 9.5 ชั่วโมงและเวลาพักทั้งหมด 45 นาที
โปรดทราบว่าช่วงเวลาทำงานเหล่านั้นไม่จำเป็นต้องแยกจากกันด้วยการหยุดพัก อาจมีช่วงเวลาการทำงานที่เพิ่งทำตามกัน (ตัวอย่างดูกรณีทดสอบ)
นอกจากนี้โปรดทราบว่าตัวแบ่งจะไม่นับรวมในเวลาทำงาน นั่นคือค่าที่แยกกันสองค่า
คุณอาจสันนิษฐานว่ามีการสั่งงานช่วงเวลาทำงาน
เอาท์พุต
ได้รับการป้อนข้อมูลนี้ส่งออกtruthyค่าถ้าแบ่งพอถูกนำและfalsyคุ้มค่าหากไม่ได้
กฎระเบียบ
- ระบุรูปแบบอินพุตที่คุณใช้ในการส่งของคุณ
- คุณไม่ต้องจัดการกับอินพุตว่าง จะมีระยะเวลาการทำงานอย่างน้อยหนึ่งครั้งเสมอ
- ระยะเวลาการทำงานจะครอบคลุมเพียงหนึ่งวันดังนั้นคุณจึงไม่ต้องทำงานเกินเที่ยงคืน
- อนุญาตให้ใช้ Date- / Time- / Anything- Builtins ได้ตราบใดที่มันมีภาษาของคุณ
- อนุญาตให้ใช้ฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบ
- กฎเริ่มต้นสำหรับอินพุต / เอาต์พุต
- ช่องโหว่มาตรฐานใช้
- นี่คือโค้ดกอล์ฟดังนั้นจำนวนไบต์ที่น้อยที่สุดจึงชนะ Tie-breaker เป็นการส่งก่อนหน้านี้
กรณีทดสอบ
รูปแบบอินพุตเหมือนกับในตัวอย่างด้านบน
[("07:00", "12:00"), ("12:30", "15:30"), ("15:45", "17:15")] -> TRUE // 9: ทำงาน 30 ชั่วโมงหยุดพัก 45 นาที -> ตกลง [("07:20", "07:45"), ("07:59", "11:30"), ("11:55", "15:00")] -> FALSE // 7: ทำงาน 1 ชั่วโมงหยุดพัก 39 นาที แต่พักครั้งแรกไม่นับเพราะ <15 นาที [("06:00", "09:00"), ("09:00", "11:50")] -> TRUE // งาน 5: 50 ชม. เพียงชั่วโมงเดียวจึงไม่ต้องหยุดพัก [("07:30", "12:00"), ("12:30", "16:00")] -> งาน TRUE // 8 ชม., 30 นาทีพัก -> ตกลง [("08:00", "12:30"), ("13:05", "17:45")] -> งาน FALSE // 9: 10 ชม. ทำงานเพียง 35 นาทีแทนที่จะหยุดพัก 45 [("08:00", "14:00")] -> FALSE // 6 ชั่วโมงทำงานไม่หยุดพัก แต่ต้องใช้เวลา 30 นาที
Happy Coding!