พิจารณาลำดับเลขฐานสองบางส่วนโดยใช้1
และ2
ตัวอย่าง:
1, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1 ...
ลองเขียนความยาววิ่งของ:
1, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1 ...
_ _ ____ ____ _ _ _ ____
1, 1, 2, 2, 1, 1, 1, 2, ...
ในกรณีนี้เราได้รับลำดับไบนารี่อีกอัน แน่นอนว่าไม่รับประกัน (เช่นถ้าเราทำซ้ำขั้นตอนที่สามจะเป็น3
) แต่เราคิดเอาเอง
ตอนนี้คำถามคือเราสามารถหาลำดับที่ใช้การเข้ารหัสแบบ run-length หลาย ๆ ครั้งนี้ทำให้เรากลับมาเป็นลำดับเดิมได้หรือไม่? สำหรับรอบความยาว 1 (คือจุดคงที่ของการเปลี่ยนแปลงนี้) เราจะพบลำดับ Oldenburger-Kolakoski (รายการ OEIS A0000002 ):
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, ...
(มีอีกวิธีแก้ปัญหาจริง: เราสามารถละเว้นผู้นำ1
)
แล้ววงจรของความยาว -2 ล่ะ? นั่นก็เป็นไปได้! ลำดับที่สองต่อไปนี้คือรายการความยาวการรันของกันและกัน
1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, ...
2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, ...
(นี่คือรายการ OEIS A025142และA025143นี่เป็นทางออกเดียว)
เราสามารถหาวงจรความยาว 3 ได้หรือไม่? แน่นอนว่าแต่ละลำดับคือการเข้ารหัสความยาวรันของถัดไป (และอันที่สามเป็นการเข้ารหัสความยาวรันของครั้งแรก):
1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, ...
1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, ...
2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, ...
ในกรณีนี้มีวิธีแก้ไขปัญหาอื่น ปรากฎว่าเราสามารถหารอบดังกล่าวสำหรับความยาวทุกรอบ ในความเป็นจริงจำนวนรอบที่แตกต่างของความยาว n ถูกกำหนดโดยรายการ OEIS A001037 (นี่ไม่ใช่การนับตัวเลือกโดยพลการของลำดับใดในรอบที่ถือว่าเป็นครั้งแรก)
สนุกจริง:f(z) = z - 1/z
ในฐานะที่ไม่น่าเป็นดูเหมือนว่าความท้าทายนี้ได้รับแรงบันดาลใจจากการศึกษาแผนที่ที่ซับซ้อน ใครก็ตามที่คิดว่าแผนที่นั้นเกี่ยวข้องกับการท้าทายนี้จะได้รับคุกกี้
ความท้าทาย
เมื่อกำหนดความยาวของวงจรk > 0
และความยาวของลำดับn > 0
ให้เอาท์พุทn
เงื่อนไขแรกของk
ลำดับเลขฐานสองที่แตกต่างกัน (ไม่ จำกัด ) ที่ก่อตัวเป็นวัฏจักรภายใต้การแปลงความยาววิ่งข้างต้น หากมีหลายรอบคุณสามารถส่งออกหนึ่งรอบ มันขึ้นอยู่กับคุณว่าลำดับใดในวัฏจักรที่จะเริ่มต้นด้วยและทิศทางใดที่วัฏจักรไป (เพื่อให้คุณสามารถแสดงผลออกมาตามลำดับแต่ละลำดับถัดไปหรือแต่ละลำดับนั้นอธิบายวงจรก่อนหน้า
คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น, รับอินพุตผ่าน STDIN (หรือทางเลือกที่ใกล้เคียงที่สุด), อาร์กิวเมนต์บรรทัดคำสั่งหรืออาร์กิวเมนต์ของฟังก์ชันและส่งผลลัพธ์ผ่าน STDOUT (หรือทางเลือกที่ใกล้เคียงที่สุด), ค่าส่งคืนของฟังก์ชันหรือพารามิเตอร์
การส่งออกอาจจะอยู่ในความสะดวกสบาย, โปร่งใส, รูปแบบรายการใด ๆ ที่ซ้อนกันเช่นว่ามิติด้านนอกเป็นและมิติด้านในเป็นk
n
ใช้กฎมาตรฐานของกอล์ฟ
ตัวอย่างเพิ่มเติม
นี่คือตัวอย่างบางส่วน. แต่อย่างที่ฉันบอกไปการแก้ปัญหานั้นไม่เหมือนกันดังนั้นทางออกของคุณอาจแตกต่างและยังคงถูกต้อง บางทีสิ่งเหล่านี้อาจช่วยคุณแก้ปัญหาได้ ตัวอย่างแต่ละตัวอย่างจะk n
ตามด้วยลำดับซึ่งแต่ละบรรทัดจะอธิบายถึงลำดับถัดไป (cyclically):
4 20
1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2
2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1
2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1
1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1
5 6
2, 2, 1, 2, 2, 1
1, 1, 2, 2, 1, 2
2, 1, 2, 2, 1, 1
1, 1, 2, 1, 1, 2
2, 1, 2, 2, 1, 2
8 20
2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2
1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1
2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2
2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2
1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1
2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2
1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1
2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1
13 50
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2
2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1
1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1
1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1
1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1
1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1
โปรดทราบว่าไม่ทุกบรรทัดในเอาต์พุตสองช่วงสุดท้ายที่แตกต่างกันแม้ว่าในที่สุดจะn
มีขนาดใหญ่พอ