অল ইওর বেস

অল ইওর বেস

মধ্যম

ভূমিকা

আপনি এইমাত্র গণিতের অধ্যাপক হিসেবে নিয়োগ পেয়েছেন। প্রথম সপ্তাহ ভালোই কেটেছিল, কিন্তু দ্বিতীয় সপ্তাহে কোথাও একটা গোলমাল। সমস্যা হলো, আপনার শিক্ষার্থীরা যে উত্তরগুলো দিচ্ছে, প্রতিটিই ভুল! ভাগ্যক্রমে, আপনার গণিতের দক্ষতা দিয়ে আপনি সমস্যাটি চিহ্নিত করতে পেরেছেন: শিক্ষার্থীদের উত্তরগুলো আসলে সঠিক, কিন্তু সেগুলো সবই বেস ২-এ (বাইনারি) লেখা! আশ্চর্যের ব্যাপার হলো, দেখা গেল প্রতি সপ্তাহে শিক্ষার্থীরা ভিন্ন একটি বেস ব্যবহার করে। শিক্ষার্থীদের উত্তর দ্রুত যাচাই করতে সাহায্য করার জন্য আপনি এমন একটি টুল বানাবেন, যা এক বেস থেকে আরেক বেসে রূপান্তর করে।

নির্দেশনা

একটি বেসে লেখা অঙ্কের একটি ক্রম, যা একটি সংখ্যাকে বোঝায়, সেটিকে অন্য একটি বেসে সেই একই সংখ্যাকে বোঝায় এমন অঙ্কের ক্রমে রূপান্তর করুন।

Note

রূপান্তরটি নিজে নিজেই লেখার চেষ্টা করুন। রূপান্তরের কাজটি করার জন্য অন্য কিছু ব্যবহার করবেন না।

পজিশনাল নোটেশন সম্পর্কে

পজিশনাল নোটেশনে, b বেসের একটি সংখ্যাকে b-এর ঘাতগুলোর একটি রৈখিক সমন্বয় হিসেবে বোঝা যায়।

সংখ্যা 42, বেস 10-এ, মানে:

(4 × 10¹) + (2 × 10⁰)

সংখ্যা 101010, বেস 2-এ, মানে:

(1 × 2⁵) + (0 × 2⁴) + (1 × 2³) + (0 × 2²) + (1 × 2¹) + (0 × 2⁰)

সংখ্যা 1120, বেস 3-এ, মানে:

(1 × 3³) + (1 × 3²) + (2 × 3¹) + (0 × 3⁰)

হ্যাঁ। উপরের এই তিনটি সংখ্যাই আসলে একেবারে একই। অভিনন্দন!

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

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

এই নির্দিষ্ট অনুশীলনীতে ভিন্ন ইনপুট ও আউটপুট বেসের জন্য একটি ValueError "throw" করতে রেইজ স্টেটমেন্ট ব্যবহার করতে বলা হয়েছে। আপনি যদি exception-টি raise করে তার সঙ্গে একটি অর্থবহ মেসেজও দেন, তবেই টেস্টগুলো পাস করবে।

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

# for input.
raise ValueError("input base must be >= 2")

# another example for input.
raise ValueError("all digits must satisfy 0 <= d < input base")

# or, for output.
raise ValueError("output base must be >= 2")
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Python Exercism

অল ইওর বেস শুরু করতে প্রস্তুত?

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