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 भी है, इसलिए हम 2 से विभाजित करते हैं। 5 प्राप्त करने के लिए 5. 5 विषम है, इसलिए हम 3 से गुणा करते हैं और 1 को 16 प्राप्त करने के लिए जोड़ते हैं। 16 भी है, इसलिए इसे आधे में काटें 8. 8 का आधा 4 है, आधा आधा है। 4 2 है, और 2 का आधा है। 1 क्योंकि इसने हमें 6 कदम उठाए, हम कहते हैं कि 10 की एक रोक दूरी है 6 की है।
एक सुपर Collatz संख्या एक संख्या है जिसका रुकने की दूरी अधिक होती है और फिर हर संख्या की रुकने की दूरी इससे छोटी होती है। उदाहरण के लिए, 6 एक सुपर Collatz संख्या है क्योंकि 6 में 8 की एक स्टॉपिंग दूरी है, 5 की स्टॉपिंग दूरी 5 है, 4 में 2 है, 3 में 7 है, 2 में 1 है और 1 में 0. ( एईएस में A006877 ) है इनपुट के रूप में एक संख्या n लें , और सभी सुपर Collatz संख्याओं को n तक आउटपुट करें ।
नियम
पूर्ण कार्यक्रम या समारोह स्वीकार्य है।
आप सुपर Collatz अनुक्रम को पूर्व-निर्धारित या हार्ड-कोड नहीं कर सकते।
आप किसी भी उचित प्रारूप में इनपुट ले सकते हैं।
आउटपुट को फ़ंक्शन से एक सूची के रूप में लौटाया जा सकता है, या STDOUT या फ़ाइल में मुद्रित किया जा सकता है। जो भी सबसे सुविधाजनक है।
अमान्य इनपुट (गैर-संख्याएँ, दशमलव, ऋणात्मक संख्या, आदि) के कारण अपरिभाषित व्यवहार होता है।
नमूना अनप्लग्ड अजगर
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
नमूना 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
यहाँ भी पहले 44 सुपर Collatz संख्याएँ हैं:
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