Collatz সিকোয়েন্স (এছাড়াও 3x + 1 টি সমস্যা বলা হয়) যেখানে আপনি, কোনো ধনাত্মক পূর্ণসংখ্যা দিয়ে শুরু এই উদাহরণস্বরূপ আমরা 10 ব্যবহার করবে, এবং এটি করার জন্য পদক্ষেপ এই সেটটির প্রযোজ্য:
if n is even:
Divide it by 2
if n is odd:
Multiply it by 3 and add 1
repeat until n = 1
10 টি সমান, সুতরাং আমরা 5 পাওয়ার জন্য 2 দিয়ে বিভক্ত করেছিলাম 5 5 টি বিজোড়, তাই আমরা 3 দিয়ে গুণিত করব এবং 16 পাওয়ার জন্য 1 যুক্ত করব 16 16 সমান, তাই 8 পাওয়ার জন্য এটি অর্ধে কেটে ফেলুন 8 এর অর্ধেকটি 4, অর্ধেক 4 হ'ল 2, এবং 2 এর অর্ধেক হ'ল এটি যেহেতু আমাদের 6 টি পদক্ষেপ নিয়েছে, তাই আমরা বলি যে 10 টির 6 টি দূরত্ব রয়েছে।
একটি সুপার কোলাটজ নম্বর এমন একটি সংখ্যা যার থামার দূরত্ব তার চেয়ে বড় তবে তার চেয়ে কম প্রতিটি সংখ্যার থামার দূরত্ব। উদাহরণস্বরূপ, 6 হ'ল একটি সুপার কোলাটজ নম্বর, যেহেতু 6টির 8 টি থামার দূরত্ব রয়েছে, 5 টির 5 টি থামার দূরত্ব রয়েছে, 4 টি 2, 3 এর 7, 2 এর 1 এবং 1 টি 0 রয়েছে ( ওইআইএসে A006877 ) আপনাকে অবশ্যই একটি সংখ্যা নিতে এন ইনপুট হিসাবে, এবং থেকে উঠে সব সুপার Collatz সংখ্যার আউটপুট এন ।
বিধি
সম্পূর্ণ প্রোগ্রাম বা ফাংশন গ্রহণযোগ্য।
আপনি সুপার কোলাটজ সিকোয়েন্সটি পূর্ববর্তী বা হার্ড-কোড করতে পারবেন না।
আপনি যে কোনও যুক্তিসঙ্গত বিন্যাসে ইনপুট নিতে পারেন।
আউটপুট ফাংশন থেকে তালিকা হিসাবে ফিরে আসতে পারে, বা STDOUT বা একটি ফাইল এ মুদ্রিত হতে পারে। যার মধ্যে সবচেয়ে সুবিধাজনক।
অবৈধ ইনপুট (অ-সংখ্যা, দশমিক, negativeণাত্মক সংখ্যা ইত্যাদি) অনির্ধারিত আচরণের ফলাফল।
নমুনা অবারিত অজগর
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
নমুনা আইও:
#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
এছাড়াও এখানে প্রথম 44 টি সুপার কোল্টজ নম্বর রয়েছে:
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