অল ইওর বেস

অল ইওর বেস

কঠিন

ভূমিকা

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

নির্দেশনা

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

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

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

  • digits কলামে পূর্ণসংখ্যার একটি JSON-এনকোড করা তালিকা থাকে। উদাহরণ:
    [1,0,1,0,1,0]
    
  • result কলামে JSON-এনকোড করা ডেটা থাকা উচিত: একটি অবজেক্ট, যেখানে digits পূর্ণসংখ্যা হিসেবে থাকে, অথবা যেকোনো এররের বর্ণনা। উদাহরণ:
    {"digits":[1,0,1,0,1,0]}
    
    অথবা
    {"error":"some error description"}
    

টেবিল স্কিমা

CREATE TABLE IF NOT EXISTS "all-your-base" (
  input_base  INTEGER NOT NULL,
  digits      TEXT    NOT NULL, -- json array
  output_base INTEGER NOT NULL,
  result      TEXT              -- json object
);

JSON ডকুমেন্টেশন

JSON ফাংশন এবং অপারেটর

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
SQLite Exercism

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

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