ฟังก์ชั่น (หรือโปรแกรม) ที่รับอินพุตและให้เอาท์พุทสามารถกล่าวได้ว่ามีรอบหากการเรียกใช้ฟังก์ชั่นบนเอาท์พุทของตัวเองซ้ำ ๆ จนมาถึงหมายเลขเดิม ตัวอย่างเช่นใช้ฟังก์ชันต่อไปนี้:
Input: n 1 2 3 4 5 6
Output: f(n) 5 7 1 3 4 9
ถ้าเราเริ่มต้นด้วยn=1
, f(n)=5
, f(f(n))=f(5)=4
, ,f(f(f(n)))=f(4)=3
f(f(f(f(n))))=f(3)=1
(1 5 4 3)
นี้ถูกเขียน เนื่องจากมีตัวเลขที่ไม่ซ้ำกัน 4 ตัวในลูปนี้นี่จึงเป็นวงจรของความยาว 4
ความท้าทายของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่มีความยาวเท่าที่เป็นไปได้ นั่นคือจะต้องมีรอบความยาว 1, ความยาว 2 และอื่น ๆ
นอกจากนี้ฟังก์ชั่น / โปรแกรมของคุณจะต้องมาจากจำนวนเต็มบวกถึงจำนวนเต็มบวกและจะต้องมีbijectiveซึ่งหมายความว่าจะต้องมีค่าอินพุตหนึ่งค่าทุกค่าผลลัพธ์ที่เป็นไปได้ทั้งหมดมากกว่าจำนวนเต็มบวกทั้งหมด หากต้องการใช้อีกวิธีหนึ่งฟังก์ชัน / โปรแกรมจะต้องคำนวณการเปลี่ยนแปลงของจำนวนเต็มบวก
รายละเอียด: อนุญาตให้ใช้ระบบอินพุต / เอาต์พุตมาตรฐานใด ๆ รวมถึง STDIN, STDOUT, อาร์กิวเมนต์ของฟังก์ชัน, การส่งคืนและอื่น ๆ ที่ไม่อนุญาตให้มีช่องโหว่มาตรฐาน
คุณไม่จำเป็นต้องกังวลเกี่ยวกับข้อ จำกัด ของชนิดข้อมูลของคุณคุณสมบัติด้านบนจำเป็นต้องพักภายใต้สมมติฐานที่ว่าint
หรือfloat
สามารถเก็บค่าใด ๆ ได้
ไม่มีข้อ จำกัด เกี่ยวกับพฤติกรรมของฟังก์ชันในอินพุตซึ่งไม่ใช่จำนวนเต็มบวกและอินพุต / เอาต์พุตเหล่านั้นจะถูกละเว้น
การให้คะแนนคือโค้ดกอล์ฟในหน่วยไบต์รหัสที่สั้นที่สุดจะเป็นผู้ชนะ