মান লো যাক আমাদের একটি সংখ্যা n আছে। আমরা যাচাই করব এটি একটি হ্যাপি নম্বর কিনা। যেনে আছে, হ্যাপি নম্বর হলো একটি সংখ্যা, যেখানে যেকোনো পজিটিভ ইন্টিজার থেকে শুরু করে তার ডিজিটের বর্গের যোগফল দ্বারা সংখ্যাকে প্রতিস্থাপন করুন, এই প্রক্রিয়া को तब तक दोहराया जाएगा जब तक यह 1 नहीं बन जाता, अन्यथा यह अंतहीन रूप से एक चक्र में लूप करेगा। वे संख्याएं, जब 1 मिल जाता है, वे ह्यappy नंबर होंगी।
उदाहरण के लिए, इनपुट 19 है, आउटपुट true होगा क्योंकि संख्या ह्यappy नंबर है। जैसा कि हम 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): 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