অল ইওর বেস

অল ইওর বেস

মধ্যম

ভূমিকা

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

নির্দেশনা

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

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⁰)

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

বাস্তবায়ন

অনুমানসমূহ:

  1. আউটপুটে শূন্যকে সর্বদা []-এর বদলে [0] হিসেবে দেখানো হয়।
  2. অন্য কোনো ক্ষেত্রে আউটপুটে শুরুর শূন্য থাকে না।
  3. ইনপুটে শুরুর শূন্য গ্রহণ করা হয়।
  4. ইনপুট ডিজিটের একটি খালি ক্রমকে এরর নয়, বরং শূন্য হিসেবে ধরা হয়।

সমস্যাযুক্ত ক্ষেত্রে একটি এরর রিটার্ন করে সামলান, যার Error() মেথড নিচের যেকোনো একটি মেসেজ রিটার্ন করে:

  • input base must be >= 2
  • output base must be >= 2
  • all digits must satisfy 0 <= d < input base
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Go Exercism

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

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