การเรียงลำดับแพนเค้กเป็นคำศัพท์สำหรับปัญหาทางคณิตศาสตร์ของการเรียงลำดับกองซ้อนของแพนเค้กที่ไม่เป็นระเบียบตามขนาดเมื่อไม้พายสามารถเสียบที่จุดใดก็ได้ในกองซ้อนและใช้เพื่อพลิกแพนเค้กทั้งหมดที่อยู่ด้านบน หมายเลขแพนเค้กP (n)คือจำนวนการโยนขั้นต่ำที่จำเป็นสำหรับnแพนเค้ก 1
ในปี 1979 หนุ่มบิลเกตส์และ Christos Papadimitriou เขียนกระดาษพิสูจน์ผูกพันบนของP (n) = (5n + 5) / 3 2
ฉันคิดว่ามันปลอดภัยที่จะสมมติว่า Gates (และ / หรือ Papadimitriou) เขียนโปรแกรมเพื่อทำการคัดแยกแพนเค้กโดยใช้อัลกอริทึมที่พัฒนาขึ้น (อาจช้ากว่า 1979) เนื่องจาก Gates เป็นโปรแกรมเมอร์ที่มีทักษะพวกเขาจึงอาจลองใช้รหัสนี้ได้อย่างดีเท่าที่จะทำได้ แต่ขนาดของซอร์สโค้ดไม่สามารถใช้งานได้แบบสาธารณะ (AFAIK)
ท้าทาย:
สร้างฟังก์ชั่น / โปรแกรมที่ดำเนินการเรียงแพนเค้กซึ่งจำนวนการพลิกสูงสุดไม่เกินขอบเขตที่ Gates และ Papadimitriou พบ 3คุณสามารถเลือกได้ว่าต้องการให้รายการน้อยไปมากหรือมากไปหาน้อยตราบใดที่มันสอดคล้องกัน
คุณอาจจะคิดว่าn <50 ดังนั้นคุณต้อง จำกัด จำนวนการพลิกไปที่ (บางค่าn- ค่าที่เลือกแบบสุ่ม):
n P(n)
38 65
49 83
50 85
ผลลัพธ์ควรเป็นตำแหน่งของไม้พายก่อนการพลิกแต่ละครั้ง ผลลัพธ์อาจเป็นศูนย์หรือหนึ่งดัชนีและคุณอาจเลือกถ้าคุณนับจากด้านบนหรือด้านล่าง
กฎเพิ่มเติม:
- รันไทม์ต้องถูกกำหนดไว้แล้ว
- ไม่มีการ จำกัด เวลาคงที่ แต่คุณต้องสามารถให้ผลลัพธ์สำหรับรายการที่มี 50 องค์ประกอบ
รายการทดสอบ:
ฉันไม่สามารถให้รายการที่ยากที่สุด (ถ้าเป็นเช่นนั้นฉันจะเขียนกระดาษไม่ใช่เรื่องท้าทาย) ดังนั้นฉันจะให้รายการตัวเลขสุ่มที่คุณสามารถทดสอบฟังก์ชั่น / โปรแกรมของคุณได้ ฉันอาจเพิ่มคนอื่น ๆ ถ้ามันเปิดออกรายการเหล่านี้ที่ "ง่าย"
9, 63, 62, 75, 45, 78, 59, 75, 69, 3, 28, 94, 51, 10, 45, 93, 97, 80, 72, 36, 80, 88, 30, 93, 84, 80, 17, 31, 6, 80, 76, 91, 9, 76, 38, 33, 22, 15, 45, 46, 15, 98, 2, 56, 90, 27, 27, 26, 69, 25
...
74, 89, 57, 52, 70, 96, 16, 5, 77, 84, 54, 13, 90, 64, 31, 80, 3, 25, 13, 19, 13, 34, 1, 79, 35, 43, 4, 19, 82, 29, 48, 95, 97, 28, 45, 62, 64, 82, 70, 34, 38, 15, 51, 83, 21, 66, 4, 42, 74, 84
...
62, 73, 7, 90, 83, 18, 12, 35, 72, 71, 99, 67, 87, 62, 65, 70, 14, 72, 55, 92, 87, 3, 7, 4, 4, 95, 49, 25, 4, 18, 49, 39, 26, 1, 45, 64, 23, 66, 39, 17, 33, 24, 58, 72, 77, 46, 99, 71, 10, 21
หวังว่า Bill Gates และ Papadimitriou จะเห็นความท้าทายนี้และให้รหัสของพวกเขาเพื่อที่เราจะได้ทราบว่าในความเป็นจริงแล้วพวกเขาเหนือกว่าพวกเขาหรือไม่
3มีการค้นพบขอบเขตบนที่ดีขึ้น แต่คุณไม่จำเป็นต้องใส่ใจกับสิ่งเหล่านั้น