मान लीजिए हमारे पास एक धनात्मक पूर्णांक n है, हमें इसकी कोलात्ज अनुक्रम की लंबाई ढूंढनी है। जैसा कि हम जानते हैं, कोलात्ज अनुक्रम क्रमिक रूप से उत्पन्न होता है जहां n = n/2 जब n सम होता है अन्यथा n = 3n + 1। और यह अनुक्रम तब समाप्त होता है जब n = 1 हो जाता है।
यदि इनपुट n = 13 जैसा है, तो आउटपुट 10 होगा क्योंकि [13, 40, 20, 10, 5, 16, 8, 4, 2, 1] यह अनुक्रम है।
इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
- यदि num 0 के समान है, तो 0 लौटाएं
- length := 1
- जब तक num 1 के समान नहीं है, करें:
- num := (num / 2) यदि num % 2 == 0 अन्यथा (3 * num + 1)
- length := length + 1
- length लौटाएं
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
class Solution:
def solve(self, num):
if num == 0:
return 0
length = 1
while num != 1:
num = (num / 2) if num % 2 == 0 else (3 * num + 1)
length += 1
return length
ob = Solution()
print(ob.solve(13))
इनपुट
13
आउटपुट
10