दी गई रेंज में पैलिंड्रोम गुणनफल ढूँढिए।
पैलिंड्रोम संख्या वह संख्या होती है जिसके अंकों का क्रम उलटने पर भी वह वही रहती है। जैसे 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) हैं।
smallest और largest के इंप्लीमेंटेशन से जुड़ी बातें:दोनों फंक्शन को दो कीवर्ड आर्गुमेंट लेने होंगे:
max_factor: intmin_factor: int, डिफॉल्ट 0इनका रिटर्न वैल्यू tuple -- (value, factors) होनी चाहिए। यहाँ value खुद पैलिंड्रोम है, और factors एक iterable है, जिसमें उस पैलिंड्रोम के दोनों गुणनखंड किसी भी क्रम में होते हैं।
कभी-कभी एक्सेप्शन उठाना ज़रूरी हो जाता है। ऐसा करते समय आपको हमेशा एक अर्थपूर्ण एरर संदेश शामिल करना चाहिए, जो बताए कि एरर का स्रोत क्या है। इससे आपका कोड पढ़ने में आसान हो जाता है और डीबगिंग में काफी मदद मिलती है। ऐसी स्थितियों में, जहाँ आप जानते हैं कि एरर का स्रोत एक खास टाइप का होगा, आप पहले से मौजूद एरर टाइप में से कोई एक चुन सकते हैं, लेकिन तब भी एक अर्थपूर्ण संदेश शामिल करना चाहिए।
इस अभ्यास में, जब largest() या smallest() फंक्शन को ऐसे दो गुणनखंड मिलें जो सही रेंज में न हों, तो raise स्टेटमेंट की मदद से ValueError "फेंकना" ज़रूरी है। टेस्ट तभी पास होंगे जब आप exception को raise भी करें और उसके साथ एक संदेश भी दें।
किसी ValueError को संदेश के साथ उठाने के लिए, उस संदेश को exception टाइप के आर्गुमेंट के रूप में लिखिए:
# if the max_factor is less than the min_factor
raise ValueError("min must be <= max")
Exercism पर साइन अप कीजिए और Python को 17 कॉन्सेप्ट146 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।