The Collatz Urutan (juga disebut 3x + 1 masalah) adalah di mana Anda mulai dengan bilangan bulat positif, untuk contoh ini kita akan menggunakan 10, dan menerapkan set ini langkah-langkah untuk itu:
if n is even:
Divide it by 2
if n is odd:
Multiply it by 3 and add 1
repeat until n = 1
10 adalah genap, jadi kami membaginya dengan 2 untuk mendapatkan 5. 5 adalah ganjil, jadi kami mengalikannya dengan 3 dan menambahkan 1 untuk mendapatkan 16. 16 genap, jadi potong menjadi dua untuk mendapatkan 8. Setengah dari 8 adalah 4, setengah dari 4 adalah 2, dan setengah dari 2 adalah 1. Karena ini membawa kita 6 langkah, kita katakan bahwa 10 memiliki jarak berhenti 6.
Angka Super Collatz adalah angka yang jarak hentinya lebih besar daripada jarak hentinya setiap angka lebih kecil dari itu. Misalnya, 6 adalah nomor Super Collatz karena 6 memiliki jarak berhenti 8, 5 memiliki jarak berhenti 5, 4 memiliki 2, 3 memiliki 7, 2 memiliki 1 dan 1 memiliki 0. ( A006877 di OEIS) Anda harus ambil angka n sebagai input, dan keluarkan semua nomor Super Collatz hingga n .
Aturan
Program atau fungsi penuh dapat diterima.
Anda tidak dapat melakukan precompute atau melakukan hard-code urutan Super Collatz.
Anda dapat mengambil input dalam format apa pun yang masuk akal.
Output dapat dikembalikan sebagai daftar dari fungsi, atau dicetak ke STDOUT atau file. Mana yang paling nyaman.
Input yang tidak valid (bukan angka, desimal, angka negatif, dll.) Menghasilkan perilaku yang tidak jelas.
Contoh python yang tidak dikerami
def collatzDist(n):
if n == 1:
return 0
if n % 2 == 0:
return 1 + collatzDist(n / 2)
return 1 + collatzDist((n * 3) + 1)
n = input()
max = -1
superCollatz = []
for i in range(1, n + 1):
dist = collatzDist(i)
if dist > max:
superCollatz.append(i)
max = dist
print superCollatz
Sampel IO:
#in #out
4 --> 1, 2, 3
50 --> 1, 2, 3, 6, 7, 9, 18, 25, 27
0 --> invalid
10000 --> 1, 2, 3, 6, 7, 9, 18, 25, 27, 54, 73, 97, 129, 171, 231, 313, 327, 649, 703, 871, 1161, 2223, 2463, 2919, 3711, 6171
Juga di sini adalah 44 nomor Super Collatz pertama:
1, 2, 3, 6, 7, 9, 18, 25, 27, 54, 73, 97, 129, 171, 231, 313, 327, 649, 703, 871, 1161, 2223, 2463, 2919, 3711, 6171, 10971, 13255, 17647, 23529, 26623, 34239, 35655, 52527, 77031, 106239, 142587, 156159, 216367, 230631, 410011, 511935, 626331, 837799