यहां हम देखेंगे कि कैसे पता लगाएं कि कोई संख्या n हैप्पी नंबर है या नहीं। हैप्पी नंबर वह संख्या है जहां किसी भी धनात्मक पूर्णांक से शुरू करके, संख्या को उसके अंकों के वर्गों के योग से बदल दिया जाता है, यह प्रक्रिया तब तक दोहराई जाती है जब तक यह 1 नहीं बन जाती, अन्यथा यह अंतहीन चक्र में लूप करती रहेगी। वे संख्याएं जिनमें 1 पाया जाता है, वे हैप्पी नंबर होंगी।
मान लीजिए संख्या 19 है, आउटपुट true होगा क्योंकि संख्या हैप्पी नंबर है। जैसा कि हम 19 से देख सकते हैं, हमें मिलेगा:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
हल करने के चरण
- यहां हम डायनामिक प्रोग्रामिंग दृष्टिकोण का उपयोग करेंगे, और पुनरावृत्ति का उपयोग करके इसे हल करेंगे
- बेस केस है, जब n = 1, तो true वापस करें
- जब n पहले से देखा गया हो, तो false वापस करें
- n को देखा गया चिह्नित करें
- n := n को स्ट्रिंग के रूप में, l := n में सभी अंकों की सूची
- temp := सभी अंकों का वर्ग योग
- पैरामीटर temp और देखी गई सूची के साथ फंक्शन को पुनरावर्ती रूप से कॉल करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
class Solution(object):
def isHappy(self, n):
"""
:type n: int
:rtype: bool
"""
return self.solve(n,{})
def solve(self,n,visited):
if n == 1:
return True
if n in visited:
return False
visited[n]= 1
n = str(n)
l = list(n)
l = list(map(int,l))
temp = 0
for i in l:
temp += (i**2)
return self.solve(temp,visited)
ob1 = Solution()
op = ob1.isHappy(19)
print("Is Happy:",op)
इनपुट
19
आउटपुट
Is Happy: True