दी गई रेंज में पैलिंड्रोम गुणनफल ढूँढिए।
पैलिंड्रोम संख्या वह संख्या होती है जिसके अंकों का क्रम उलटने पर भी वह वही रहती है। जैसे 121 एक पैलिंड्रोम संख्या है, लेकिन 112 नहीं है।
संख्याओं की एक रेंज दी गई है। उस रेंज की दो संख्याओं के गुणनफल जो पैलिंड्रोम हैं, उनमें से सबसे बड़ा और सबसे छोटा पैलिंड्रोम ढूँढिए।
आपके हल को सबसे बड़ा और सबसे छोटा पैलिंड्रोम लौटाने चाहिए, और साथ ही रेंज के अंदर उनमें से हर एक के गुणनखंड भी। अगर रेंज के अंदर सबसे बड़े या सबसे छोटे पैलिंड्रोम के गुणनखंडों के एक से अधिक जोड़े हों, तो सारे जोड़े लौटाने चाहिए।
रेंज [1, 9] दी गई है (दोनों समेत)...
और इस रेंज में संभव सभी गुणनफलों की सूची यह है:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 15, 21, 24, 27, 20, 28, 32, 36, 25, 30, 35, 40, 45, 42, 48, 54, 49, 56, 63, 64, 72, 81]
इस उदाहरण में पैलिंड्रोम गुणनफल सभी एक अंक वाली संख्याएँ हैं:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
सबसे छोटा पैलिंड्रोम गुणनफल 1 है।
इसके गुणनखंड (1, 1) हैं।
सबसे बड़ा पैलिंड्रोम गुणनफल 9 है।
इसके गुणनखंड (1, 9) और (3, 3) हैं।
रेंज [10, 99] दी गई है (दोनों समेत)...
सबसे छोटा पैलिंड्रोम गुणनफल 121 है।
इसके गुणनखंड (11, 11) हैं।
सबसे बड़ा पैलिंड्रोम गुणनफल 9009 है।
इसके गुणनखंड (91, 99) हैं।
इस अभ्यास को हल करने के लिए आपको ये दो फंक्शन बनाने होंगे:
largestPalindromesmallestPalindromeदोनों फंक्शन इनपुट में गुणनखंडों की निचली और ऊपरी सीमा लेते हैं और एक जोड़ा (value, [(factor1, factor2)]) लौटाते हैं, जिसमें वह पैलिंड्रोम और उसके संभावित गुणनखंड-जोड़े होते हैं।
अगर आपको टाइप को लेकर संदेह है, तो दिए गए सिग्नेचर इस्तेमाल कर सकते हैं, लेकिन इनकी वजह से अपनी रचनात्मकता को सीमित न कीजिए।
गुणनखंडों के ऐरे में एक ही गुणनखंड-जोड़ा दो बार लौटाना ठीक है, और गुणनखंडों का क्रम मायने नहीं रखता।
छोटे या बड़े पैलिंड्रोम ढूँढने के लिए थोड़ा अलग एल्गोरिदम इस्तेमाल करने के बारे में सोचिए।
Exercism पर साइन अप कीजिए और Haskell को 107 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।