Fannkuchเป็นโปรแกรมมาตรฐานคลาสสิก ชื่อนี้มาจากภาษาเยอรมัน "Pfannkuchen" - แพนเค้ก - สำหรับความคล้ายคลึงของอัลกอริทึมในการพลิกกองแพนเค้ก ลำดับหมายเลข Fannkuch ถูกสร้างขึ้นดังนี้:
ใช้การเรียงสับเปลี่ยนของ {1 ..... n} ตัวอย่างเช่น: {4,2,1,5,3} นำองค์ประกอบแรกมาที่นี่ 4 และกลับลำดับขององค์ประกอบ 4 รายการแรก: {5,1,2,4,3} ทำซ้ำจนกว่าองค์ประกอบแรกจะเป็น 1 ดังนั้นการพลิกจะไม่เปลี่ยนแปลงอะไรอีก: {3,4,2,1,5}, {2,4,3,1,5}, {4,2,3 1,5}, {1,3,2,4,5}
คุณต้องเขียนโปรแกรมหรือฟังก์ชั่นซึ่งคำนวณลำดับ Fannkuch เหมือนสำหรับสตริงของตัวอักษร แทนที่จะใช้ตัวเลขเพื่อระบุองค์ประกอบของรายการที่จะพลิกแต่ละครั้งตำแหน่งของตัวอักษรในตัวอักษรควรใช้ ตัวอย่างเช่นผู้นำcจะระบุว่าคุณควรกลับลำดับของ 3 องค์ประกอบแรกในขณะที่ผู้นำaชี้ให้เห็นว่าลำดับเสร็จสมบูรณ์
อินพุต
อินพุตจะถูกจัดเตรียมเป็นสตริงผ่าน stdin หรือเป็นอาร์กิวเมนต์ของฟังก์ชัน สตริงจะมีตัวอักษรตัวพิมพ์เล็กระหว่าง 1 ถึง 26 ตัว สตริงจะไม่มีตัวอักษรที่มีดัชนีเทียบเท่าจะทำให้อัลกอริทึม Fannkuch พลิกองค์ประกอบมากกว่าที่มีอยู่
เอาท์พุต
โปรแกรมหรือฟังก์ชั่นควรส่งคืนหรือพิมพ์เพื่อ stdout ลำดับของคำที่สร้างขึ้นโดยใช้อัลกอริทึม Fannkuch จนกว่าaจะพบผู้นำหน้ารวมถึงสตริงเริ่มต้น ตัวอย่างเช่นหากอินพุตbcaคุณอาจพิมพ์:
bca
cba
abc
ผลลัพธ์ที่พิมพ์สามารถใช้ตัวคั่นที่เหมาะสมจุลภาคขึ้นบรรทัดใหม่ ฯลฯ ตัวเลือกใด ๆ ของช่องว่างเป็นที่ยอมรับ
เป็นอีกตัวอย่างหนึ่งถ้าข้อมูลของeabdcคุณคุณอาจกลับมา
("eabdc"
"cdbae"
"bdcae"
"dbcae"
"acbde")
กฎและเกณฑ์การให้คะแนน
นี่คือรหัสกอล์ฟซึ่งเป็นโปรแกรมที่สั้นที่สุดชนะ ช่องโหว่มาตรฐานไม่ได้รับอนุญาต
proc fcmpอยู่แถวนี้