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
อยู่แถวนี้