मान लीजिए कि हमारे पास एक धनात्मक पूर्णांक n है, तो हमें इसके Collatz अनुक्रम की लंबाई ज्ञात करनी होगी। जैसा कि हम जानते हैं Collatz अनुक्रम क्रमिक रूप से उत्पन्न होता है जहाँ n =n/2 जब n और भी अन्यथा n =3n+ 1 होता है। और यह क्रम n =1. पर समाप्त होता है।
इसलिए, यदि इनपुट n =13 जैसा है, तो आउटपुट 10 होगा क्योंकि [13, 40, 20, 10, 5, 16, 8, 4, 2, 1] यह अनुक्रम है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- यदि संख्या 0 के समान है, तो
- वापसी 0
- लंबाई:=1
- जबकि संख्या 1 के समान नहीं है, करें
- num :=(num/2) जब num mod 2 0 हो अन्यथा (3 * num + 1)
- लंबाई:=लंबाई + 1
- वापसी की लंबाई
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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