নির্দিষ্ট একটি পরিসরে প্যালিনড্রোম গুণফল খুঁজে বের করুন।
একটি প্যালিনড্রোমিক সংখ্যা হলো এমন একটি সংখ্যা, যার অঙ্কগুলো উল্টো করে লিখলেও সংখ্যাটি একই থাকে।
যেমন 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টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।