ট্র্যাক
/
Python
Python
/
অনুশীলনী
/
প্যালিনড্রোম গুণফল
প্যালিনড্রোম গুণফল

প্যালিনড্রোম গুণফল

মধ্যম

নির্দেশনা

নির্দিষ্ট একটি পরিসরে প্যালিনড্রোম গুণফল খুঁজে বের করুন।

একটি প্যালিনড্রোমিক সংখ্যা হলো এমন একটি সংখ্যা, যার অঙ্কগুলো উল্টো করে লিখলেও সংখ্যাটি একই থাকে। যেমন 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: int
  • min_factor: int, ডিফল্ট 0

এদের রিটার্ন ভ্যালু হতে হবে একটি tuple -- (value, factors), যেখানে value হলো প্যালিনড্রোমটি নিজেই, আর factors হলো একটি iterable, যাতে প্যালিনড্রোমের দুটি গুণনীয়কই যেকোনো ক্রমে থাকে।

এক্সসেপশন মেসেজ

কখনও কখনও একটি এক্সসেপশন রেইজ করা প্রয়োজন হয়। যখন আপনি এটি করেন, তখন এররটির উৎস কী তা বোঝাতে সবসময় একটি অর্থবহ এরর মেসেজ যোগ করা উচিত। এতে আপনার কোড আরও পাঠযোগ্য হয়ে ওঠে এবং ডিবাগিংয়ে অনেক সুবিধা হয়। যেসব পরিস্থিতিতে আপনি জানেন যে এররের উৎসটি একটি নির্দিষ্ট টাইপ হবে, সেখানে আপনি বিল্ট-ইন এরর টাইপগুলোর একটি রেইজ করা বেছে নিতে পারেন, তবে তবুও একটি অর্থবহ মেসেজ যোগ করা উচিত।

এই নির্দিষ্ট অনুশীলনীর জন্য raise স্টেটমেন্ট দিয়ে একটি ValueError "থ্রো" করতে হবে, যখন largest() বা smallest() ফাংশন সঠিক রেঞ্জের বাইরে থাকা একজোড়া গুণনীয়ক পায়। টেস্ট কেবল তখনই পাস হবে যদি আপনি exception-টি raise করেন এবং তার সঙ্গে একটি মেসেজও দেন।

একটি মেসেজসহ ValueError রেইজ করতে, মেসেজটি exception টাইপের আর্গুমেন্ট হিসেবে লিখুন:

# if the max_factor is less than the min_factor
raise ValueError("min must be <= max")
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Python Exercism

প্যালিনড্রোম গুণফল শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Python ট্র্যাকের 17টি কনসেপ্ট146টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।