เดือนที่แล้วฉันยืมหนังสือมากมายจากห้องสมุด พวกเขาทั้งหมดเป็นหนังสือที่ดีเต็มไปด้วยอารมณ์และพล็อตเรื่องบิด น่าเสียดายที่ในบางจุดฉันโกรธ / เศร้า / ผิดหวังมาก
ตอนนี้ห้องสมุดอยากรู้ว่าฉันฉีกหนังสือแต่ละเล่มออกไปกี่หน้า
เป้าหมายของคุณคือการเขียนโปรแกรมซึ่งใช้การเรียงลำดับรายการที่คั่นด้วยเครื่องหมายจุลภาคเป็นอินพุตและพิมพ์จำนวนหน้าต่ำสุดและสูงสุดที่เป็นไปได้ที่ฉันสามารถฉีกออกได้ แต่ละบรรทัดแสดงถึงหนังสือแต่ละหมายเลขแสดงถึงหน้าที่หายไปจากหนังสือ
อินพุตตัวอย่าง:
7,8,100,101,222,223
2,3,88,89,90,103,177
2,3,6,7,10,11
1
1,2
ตัวอย่างผลลัพธ์:
4/5
5/6
3/6
1/1
1/2
4/5
หมายความว่าฉันอาจฉีกออกเป็น 4 หรือ 5 หน้าขึ้นอยู่กับว่าหมายเลขหน้าของหนังสือเริ่มต้นที่ด้านใด อาจมีการฉีกขาดหน้า 6/7 หน้า 8/9 หน้า 100/101 และหน้า 222/223 (4 หน้า) อีกวิธีหนึ่งอาจมีการฉีกขาดหน้า 7/8, หน้า 99/100, หน้า 101/102, หน้า 221/222 และหน้า 223/224 (5 หน้า)
จำไว้ว่าหน้าหนังสือมีด้านหน้าและด้านหลังเสมอ นอกจากนี้หมายเลขหน้าแตกต่างจากหนังสือเล่มหนึ่งไปยังหนังสือ หนังสือบางเล่มมีเลขหน้าอยู่ทางซ้าย บางอันอยู่ที่หน้าขวา หนังสือทั้งหมดถูกอ่านจากซ้ายไปขวา
โค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ ไม่จำเป็นต้องใช้รูปแบบ I / O ที่เข้มงวด โปรแกรมของคุณจะต้องสามารถนำหนังสือหนึ่งเล่มขึ้นไปเป็นอินพุตได้ มีความสุข.
min/max
max/min
(แม้ว่าโดยส่วนตัวแล้วฉันไม่ต้องการเป็นส่วนหนึ่งของสเป็ค!)
programs must be able to take one or more books as input
ปกครอง ส่วนใหญ่ (ถ้าไม่ใช่ทั้งหมด) เพียงแค่ห่อโค้ดเพื่อยืนยันหนังสือเล่มเดียวในวงหรือบางสิ่งบางอย่าง IMHO เพียงเพิ่มค่าใช้จ่ายในคำตอบโดยที่ไม่ได้รับความท้าทายเพียงเล็กน้อย คำถามนี้มีคำตอบมากมายอยู่แล้วดังนั้นจึงควรเก็บเรื่องนี้ไว้เหมือนเดิม แต่จำไว้ว่าสำหรับความท้าทายในอนาคตของคุณ
1,3,5,7,9,11,13,15,17,18
- เพื่อประโยชน์ของภาษาที่มีในตัวsort
วิธีการเรียงลำดับ lexicographically โดยค่าเริ่มต้น (สมมติว่าความต้องการของการส่งออกเรียงอย่างต่อเนื่องจะเพิ่มเข้าไปในสเปค)
4/5
และ5/4
)