นิยามฟังก์ชันf (n)สำหรับจำนวนเต็มบวกnดังนี้:
- n / 2หากnเป็นเลขคู่
- 3 * n + 1ถ้าnเป็นเลขคี่
หากคุณใช้ฟังก์ชั่นนี้ซ้ำ ๆ กับn ที่มากกว่า 0 ผลลัพธ์จะดูเหมือนว่าจะรวมกันเป็น 1 เสมอ (แม้ว่าจะยังไม่มีใครพิสูจน์ได้) สถานที่แห่งนี้เป็นที่รู้จักกันCollatz คาดเดา
กำหนดเวลาหยุดของจำนวนเต็มตามจำนวนครั้งที่คุณต้องผ่านฟังก์ชัน Collatz fก่อนที่จะถึง 1 นี่คือเวลาหยุดของจำนวนเต็ม 15 ตัวแรก:
1 0
2 1
3 7
4 2
5 5
6 8
7 16
8 3
9 19
10 6
11 14
12 9
13 9
14 17
15 17
ขอเรียกชุดตัวเลขใด ๆ ที่มีเวลาหยุดเดียวกันญาติ Collatz ตัวอย่างเช่น 5 และ 32 เป็นลูกพี่ลูกน้อง Collatz โดยมีเวลาหยุด 5
งานของคุณ: เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้จำนวนเต็มแบบไม่ลบและสร้างชุดของญาติ Collatz ที่เวลาหยุดเท่ากับจำนวนเต็มนั้น
อินพุต
จำนวนเต็มที่ไม่ใช่ค่าลบ S ที่กำหนดผ่าน STDIN, ARGV หรืออาร์กิวเมนต์ของฟังก์ชัน
เอาท์พุต
รายการของตัวเลขทั้งหมดที่มีการหยุดเวลา S A, เรียงในขึ้นเพื่อ รายการของคุณอาจถูกส่งออกโดยโปรแกรมของคุณหรือส่งคืนหรือส่งออกโดยฟังก์ชั่นของคุณ รูปแบบผลลัพธ์มีความยืดหยุ่น: คั่นด้วยช่องว่าง, คั่นด้วยบรรทัดใหม่หรือรูปแบบรายการมาตรฐานของภาษาของคุณใช้ได้ตราบใดที่ตัวเลขสามารถแยกความแตกต่างได้อย่างง่ายดาย
ความต้องการ
การส่งของคุณจะต้องให้ผลลัพธ์ที่ถูกต้องสำหรับ S-30 ใด ๆ มันควรจะเสร็จในไม่กี่วินาทีหรือนาทีไม่ใช่ชั่วโมงหรือวัน
ตัวอย่าง
0 -> 1
1 -> 2
5 -> 5, 32
9 -> 12, 13, 80, 84, 85, 512
15 -> 22, 23, 136, 138, 140, 141, 150, 151, 768, 832, 848, 852, 853, 904, 906, 908, 909, 5120, 5376, 5440, 5456, 5460, 5461, 32768
นี่คือสรุปสาระสำคัญของการส่งออกสำหรับS = 30
นี่คือcode-golf : โปรแกรมที่สั้นที่สุดในหน่วยไบต์ชนะ โชคดี!