একদা এক জ্ঞানী ভৃত্য এক রাজপুত্রের প্রাণ বাঁচিয়েছিলেন। রাজা কথা দিলেন, ভৃত্যটি যা কিছু চাইতে পারে তিনি তাই দেবেন। রাজা যে দাবা ভালোবাসেন তা জেনে ভৃত্যটি রাজাকে বললেন, তিনি কিছু গমের দানা চান। দাবাবোর্ডের প্রথম ঘরে এক দানা, আর পরের প্রতিটি ঘরে দানার সংখ্যা দ্বিগুণ হয়ে চলবে।
দাবা বোর্ডে গমের দানার সংখ্যা হিসাব করুন।
দাবা বোর্ডে ৬৪টি ঘর থাকে। ১ নম্বর ঘরে একটি দানা, ২ নম্বর ঘরে দুটি দানা, ৩ নম্বর ঘরে চারটি দানা, এভাবেই প্রতি ঘরে দানার সংখ্যা দ্বিগুণ হতে থাকে।
এমন কোড লিখুন যা হিসাব করে:
Euphoria-তে একটি atom যেকোনো ধরনের সংখ্যা ধারণ করতে পারে, আর এর integer সাবটাইপটি পূর্ণসংখ্যার জন্য বোঝানো হয়েছে।
C-এর মতো ভাষায় একটি unsigned ৬৪-বিট ইন্টিজার রিটার্ন করে এই অনুশীলনীটি সমাধান করা সম্ভব।
তবে Euphoria-তে ইন্টিজারগুলো signed, এবং মেশিন ওয়ার্ডের চেয়ে এক বিট ছোট, তাই এই অনুশীলনীর জন্য সেগুলো খুবই ছোট; অন্যদিকে অ্যাটমগুলো প্রয়োজনীয় ৬৪ বিট নির্ভুলতাসহ আরও বড় ইন্টিজার ধারণ করতে পারে।
Euphoria-র একটি ৩২-বিট সংস্করণ আছে, যা এখনও টিকে আছে যাতে লিগ্যাসি অ্যাপ্লিকেশনগুলো আগে থেকে তৈরি করা ৩২-বিট dll/so ব্যবহার চালিয়ে যেতে পারে, যখন কোনো ৬৪-বিট সংস্করণ পাওয়া যায় না, অথবা সেগুলোর র্যাপারটি হার্ড-কোড করা ৩২-বিট অফসেটে ভরা। এই সংস্করণটি এই কাজটি সমাধানের জন্য একেবারেই অপর্যাপ্ত, কারণ ওই অ্যাটমগুলোতে মাত্র ৫৩ বিট নির্ভুলতা থাকে। যদি স্থানীয়ভাবে এই অনুশীলনীটি সমাধান করতে গিয়ে আপনার সমস্যা হয়, তাহলে নিশ্চিত হয়ে নিন যে আপনি Euphoria-র ৬৪-বিট সংস্করণ ব্যবহার করছেন।
Exercism-এ সাইন আপ করুন, Euphoria ট্র্যাকের 64টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।