แรงจูงใจ : บางครั้งบางรายการในรายการจะไม่นับรวมกับยอดรวมของคุณ ตัวอย่างเช่นการนับจำนวนผู้โดยสารเครื่องบินในแถวที่ทารกนั่งอยู่บนตักของผู้ปกครอง
ท้าทาย : เขียนโปรแกรมในการแยกรายชื่อของรายการเป็นชิ้น แต่ละอัน (ยกเว้นอาจเป็นครั้งสุดท้าย) มีขนาดเท่ากันซึ่งขนาดถูกกำหนดเป็นจำนวนรายการที่ผ่านฟังก์ชันเพรดิเคต
กฎ :
- โปรแกรมของคุณต้องใช้
- รายการของรายการ
- ขนาดก้อนจำนวนเต็มบวก
- ฟังก์ชันเพรดิเคต (รับไอเท็มและส่งคืนจริงหรือเท็จ)
- คุณต้องส่งคืนรายการอินพุตแยกเป็นชิ้น ๆ
- แต่ละอันคือรายการของรายการ
- โดยรวมแล้วรายการจะต้องอยู่ในลำดับเดียวกันโดยไม่มีใครสนใจ
- จำนวนรายการที่ผ่านเพรดิเคตในแต่ละก้อน (ยกเว้นอาจเป็นรายการสุดท้าย) ควรตรงกับขนาดของก้อนข้อมูลเข้า
- รายการที่ล้มเหลวเพรดิเคตไม่ควรนับรวมกับขนาดนี้
- รายการที่ล้มเหลวของกริยาคือ
- ยังคงรวมอยู่ในกลุ่มเอาต์พุต
- จัดสรรให้กับชิ้นแรกสุดในกรณีที่ชิ้นเป็น "เต็ม" แต่รายการถัดไปเป็นรายการที่ล้มเหลวในเพรดิเคต
- ดังนั้นชิ้นสุดท้ายอาจไม่เพียง แต่ประกอบด้วยรายการที่ล้มเหลวของเพรดิเคต
- ก้อนสุดท้ายอาจมีขนาดน้อยกว่าขนาดก้อนเนื่องจากรายการทั้งหมดได้รับการพิจารณา
ตัวอย่างที่ไม่ครบถ้วนสมบูรณ์:
ตัวอย่างที่ง่ายที่สุดคือการพิจารณา1และ0s x ==> x > 0ที่ฟังก์ชั่นการวินิจฉัยคือ ในกรณีนี้sumแต่ละอันจะต้องตรงกับขนาดของก้อน
- รายการ:
[], ขนาด:2, เพรดิเคต:x > 0-> อย่างใดอย่างหนึ่ง[]หรือ[[]] - รายการ:
[0, 0, 0, 0, 0, 0], ขนาด:2, เพรดิเคต:x > 0->[[0, 0, 0, 0, 0, 0]] - รายการ:
[0, 1, 1, 0], ขนาด:2, เพรดิเคต:x > 0->[[0, 1, 1, 0]] - รายการ:
[0, 1, 1, 0, 1, 0, 0], ขนาด:2, เพรดิเคต:x > 0->[[0, 1, 1, 0], [1, 0, 0]] - รายการ:
[0, 1, 0, 0, 1, 0, 1, 1, 0], ขนาด:2, เพรดิเคต:x > 0->[[0, 1, 0, 0, 1, 0], [1, 1, 0]]
และขอจบด้วยผู้โดยสารเครื่องบินที่ทารกนั่งบนตักของผู้ปกครองตัวอย่างเช่น Aสำหรับผู้ใหญ่bสำหรับทารกแถวเครื่องบิน3กว้างที่นั่งผู้ใหญ่ระบุไว้เสมอก่อนที่ลูกของพวกเขา:
- รายการ:
[A, b, A, b, A, A, A, b, A, b, A, A, b], ขนาด:3, เพรดิเคต:x => x == A->[[A, b, A, b, A], [A, A, b, A, b], [A, A, b]]