मान लीजिए कि हमारे पास एक संख्या n है। हम जांच करेंगे कि यह एक हैप्पी नंबर है या नहीं। जैसा कि हम जानते हैं, खुश संख्या एक संख्या है, जहां किसी भी सकारात्मक पूर्णांक से शुरू होने वाली संख्या को उसके अंकों के वर्गों के योग से बदल दिया जाता है, यह प्रक्रिया तब तक दोहराई जाएगी जब तक कि यह 1 न हो जाए, अन्यथा यह एक चक्र में अंतहीन रूप से लूप होगा। वे नंबर, जब 1 मिल जाए, तो वे खुश नंबर होंगे।
तो, इनपुट 19 की तरह है, आउटपुट सही होगा क्योंकि नंबर हैप्पी नंबर है। जैसा कि हम 19 से देख सकते हैं, हम प्राप्त करेंगे
1 2 + 9 2 =82
8 2 + 2 2 =68
6 2 + 8 2 =100पी>
1 2 + 0 2 + 0 2 =1पी>
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- यहां हम डायनेमिक प्रोग्रामिंग दृष्टिकोण का उपयोग करेंगे, और इसे रिकर्सन का उपयोग करके हल करेंगे
- आधार मामला है, जब n =1 है, तो सत्य वापस आ जाता है
- जब n पहले ही जा चुका है, तो झूठी वापसी करें
- एन को विज़िट किया गया के रूप में चिह्नित करें
- n :=n स्ट्रिंग के रूप में, l :=n में सभी अंकों की सूची
- अस्थायी:=सभी अंकों का वर्ग योग
- पैरामीटर अस्थायी और विज़िट की गई सूची के साथ पुनरावर्ती रूप से वापसी फ़ंक्शन
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution(object):
def isHappy(self, n):
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)
ob = Solution()
print(ob.isHappy(19)) इनपुट
19
आउटपुट
True