A "สัมผัสโครงการ" คือสตริงของตัวอักษรa
ที่จะz
ดังกล่าวว่าเกิดขึ้นครั้งแรกของตัวละครที่อยู่ในลำดับจากน้อยไปมาก (ไม่มีช่องว่าง) a
เริ่มต้นจาก ตัวอย่างเช่น (ที่มีการปรากฏครั้งแรก):
abccdbebdcfa
^^^ ^ ^ ^
จำนวนของรูปแบบการสัมผัสของความยาวN
จะได้รับจากหมายเลขที่เบลล์ B(N)
( OEIS A000110 )
ความท้าทาย
งานของคุณคือการใช้การแจงนับของรูปแบบสัมผัสเหล่านี้เช่นการทำแผนที่ bijective จากจำนวนเต็มไปยังรูปแบบสัมผัส คุณได้รับเป็นจำนวนเต็มบวกเช่นเดียวกับจำนวนเต็มไม่เป็นลบN <= 26
หรือคุณสามารถใช้ช่วง0 <= i < B(N)
1 <= i <= B(N)
คุณควรเอาท์พุทแบบแผนสัมผัสของความยาวN
เช่นที่ทุกคนi
ให้สตริงที่แตกต่างกัน
คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น, รับอินพุตผ่าน STDIN (หรือทางเลือกที่ใกล้เคียงที่สุด), อาร์กิวเมนต์บรรทัดคำสั่งหรืออาร์กิวเมนต์ของฟังก์ชันและส่งผลลัพธ์ผ่าน STDOUT (หรือทางเลือกที่ใกล้เคียงที่สุด), ค่าส่งคืนของฟังก์ชันหรือพารามิเตอร์
คุณสามารถใช้ตัวอักษรพิมพ์เล็กหรือพิมพ์ใหญ่
รหัสของคุณจะต้องสามารถจัดการกับการป้อนข้อมูลที่ถูกต้องในระยะเวลาที่เหมาะสม (เช่นไม่เกินสองสามชั่วโมงสำหรับN = 26
กรณีที่เลวร้ายที่สุดi
) สิ่งนี้ควรอนุญาตโซลูชันที่ปรับมาตราส่วนแบบทวีคูณด้วยN
(สำหรับฐานขนาดเล็ก) แม้ในภาษาที่ช้า แต่ห้ามใช้โซลูชันที่ขยายขนาดเชิงเส้นด้วยi
(เช่นB(N)
) โดยเฉพาะอย่างยิ่งนั่นหมายความว่าคุณไม่สามารถวนซ้ำตามรูปแบบความยาวสัมผัสที่ถูกต้องทั้งหมดN
จนกว่าคุณจะละทิ้งi
รูปแบบ
ใช้กฎมาตรฐานของกอล์ฟ
ตัวอย่าง
การกำหนดที่แน่นอนของi
แผนการถึง (เช่นคำสั่งของแผนการสำหรับที่กำหนดN
) ขึ้นอยู่กับคุณ แต่ถ้าคุณเลือกการเรียงลำดับพจนานุกรมการแก้ปัญหาของคุณควรสอดคล้องกับตารางต่อไปนี้ ( -
แสดงว่ามีการป้อนข้อมูลไม่ถูกต้อง):
N\i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 a - - - - - - - - - - - - - -
2 aa ab - - - - - - - - - - - - -
3 aaa aab aba abb abc - - - - - - - - - -
4 aaaa aaab aaba aabb aabc abaa abab abac abba abbb abbc abca abcb abcc abcd
นี่คือสคริปต์ CJam สั้น ๆที่สร้างแผนการคล้องจองที่ถูกต้องทั้งหมดสำหรับความยาวที่กำหนด (แต่อย่าลองมากกว่า 10 หรือคุณจะรอสักครู่)
N
) (ใน) หากไม่ได้กลายเป็นเรื่องไม่ยุติธรรมเลยและฉันก็โง่เกินกว่าที่จะหาได้