ছোটদের প্রোগ্রামিং শেখা এখন আগের চেয়েও সহজ। কারণ দ্বিমিক প্রকাশনী থেকে বের হয়েছে তামিম শাহরিয়ার সুবিন-এর "পাইথন দিয়ে প্রোগ্রামিং শেখা"! বিস্তারিত জানতে এখানে ক্লিক করুন

ম্যাজিক

সমস্যাটি তৈরি করেছেন তানভীরুল ইসলাম (পিএইচডি শিক্ষার্থী, ন্যাশনাল ইউনিভার্সিটি অব সিঙ্গাপুর)।


একটা রোবট ম্যাজিক দেখতে গেছে। জাদুকর নানান রকম খেলা দেখাচ্ছে। এবং তা দেখে বাকি দর্শকরা মাঝে মধ্যেই চমৎকৃত হয়ে হাততালি দিচ্ছে। কিন্তু রোবটটা পড়েছে মুশকিলে। এইসব খেলার মধ্যে ঠিক কখন যে ম্যাজিকটা হচ্ছে, সেটা সে ধরতে পারছে না। যেমন এই খেলাটার কথাই ভাবা যাক। জাদুকর একটা থলি নিয়েছে। এবং খেলার শুরুতেই সবাইকে দেখিয়েছে যে থলিটা একেবারেই ফাঁকা। এরপর সে থলিতে কিছু বল রাখছে, এবং বের করছে। আর তাই দেখেই একটু পর পর তুমুল হাততালি দিচ্ছে বাকি দর্শক! এতসব শোরগোলে রোবটটি চরম বিভ্রান্ত। তোমার কাজ হলো, কখন ম্যাজিকটা হচ্ছে এটা বুঝতে এই বোকা রোবটটিকে সাহায্য করা।

রোবটটি অবশ্য কিছু কাজ এগিয়ে রেখেছে। যাদুকর যখনই থলিতে একটা বল রাখে, রোবটটি 1 লেখে। এবং যখনই কোনো বল বের করে তখন লেখে 0 । এভাবে পুরো খেলায় কতবার থলিতে বল রাখা হলো আর বের করা হলো, সেটাকে সে একটা স্ট্রিং দিয়ে প্রকাশ করে। যেমন, 10110 । এর মানে হলো যাদুকর থলিতে প্রথমে একটা বল রেখেছে, তারপর থলিথেকে একটা বল বের করেছে। তারপর পর পর দুইটা বল রেখেছে। এবং সব শেষে একটা বল বের করে নিয়েছে। যার মধ্যে ম্যাজিকের কিছু নেই।

কিন্তু যদি স্ট্রিংটা হতো এমন 1001 তাহলেই দেখ ম্যাজিক হচ্ছে। কারণ জাদুকর প্রথমে একটা বল রাখছে। তারপর একটা বল বের করে নিয়েছে। কিন্তু এর পর সে আবার একটা বল বের করছে! কিন্তু থলিটা তো শুরুতে ফাঁকাছিলো। এই বাড়তি বলটা এলো কোথা থেকে? এটাই হলো ম্যাজিক। দুঃখের বিষয় হলো, জাদুকরের খেলা দেখে রোবটটা এই স্ট্রিং টা বানাতে পারলেও সেখান থেকে কখন ম্যাজিক হচ্ছে তা বুঝতে পারছে না। তোমার কাজ সেই প্রোগ্রামটা লিখে দেওয়া।


২টি মন্তব্য:

  1. ভাইয়া, আমার কোড টা কি ঠিক আছে ???


    #include
    using namespace std;

    class count {
    public:
    char c[100];
    int push(int n);
    int peek();
    count(){
    cin >> c;
    }

    };

    int count::push(int n){
    if(n=='1') return 1;
    else if(n=='0') return -1;
    else return 0;
    }

    int count::peek(){
    int i,x=0;
    for(i=0;i<100;i++){
    x=x+push(c[i]);
    if(x<0) return 1;
    }
    return 0;
    }

    int main(){
    int scan;
    count rob;
    scan=rob.peek();
    if(scan==0) {
    cout << "Magic"<<endl;
    }
    if(scan==1) {
    cout << "Magic"<<endl;
    }
    return 0;
    }

    উত্তরমুছুন

এখানে বিষয়সংশ্লিষ্ট মন্তব্য কিংবা প্রশ্ন করা যাবে। বাংলায় মন্তব্য করার সময় বাংলা হরফে লিখতে হবে। আর রোমান হরফে লিখলে ইংরেজিতে লিখতে হবে। নতুবা মন্তব্য প্রকাশ করা হবে না। ধন্যবাদ।