Post updated on 26th July, 2016 at 02:12 pm
অনলাইন জাজ সিরিজ – ১ পড়ার পর তুমি যদি এখন পর্যন্ত অনলাইন জাজে কোন প্রবলেম সলভ করে না থাক তাহলে আজকের পোস্টটা তোমার জন্য!
আজকে আমরা আলোচনা করব বাংলাদেশে তৈরি হওয়া (আমার জানা মতে) প্রথম অনলাইন জাজ সাইট LightOJ এর প্রথম প্রবলেমটি নিয়ে।
LightOJ 1000 – Greetings from LightOJ
তোমার কাজ হচ্ছে প্রথমেই উপরের লিংকে গিয়ে প্রবলেমটির আগা-গোড়া পড়ে শেষ করা। যেহেতু প্রবলেম সলভ করা অনেক জটিল একটা কাজ (!) তাই তোমাকে খুব ভাল ভাবে প্রবলেমটা পড়তে হবে। হুম…!!!
যদি ভাল ভাবে পড়ে থাক তাহলে ঘটনা যেটা পাবা তা হচ্ছে “দুইডা সংখ্যার যোগ করা আবার কুনু প্রবলেম হইল নাকি?” 😀 ঠিক তাই! অনলাইন জাজের প্রবলেমগুলো এরকমই হয় (কিছু কঠিন জিনিস থাকে, কী দরকার সেগুলো নিয়ে এখনি চিন্তা করার?
প্রবলেম ডেস্ক্রিপশনে বলা আছে Now you are given the number of problems in each of the computers, you have to find the total number of problems. অর্থাৎ, দুটি কম্পিউটারে কিছু প্রবলেম রাখা আছে। তোমাকে বলা হবে দুইটি পূর্ণসংখ্যা (int) a ও b। একটা কম্পিউটারে রাখা আছে a-টি প্রবলেম, আরেকটা কম্পিউটারে রাখা আছে b-টি প্রবলেম। তোমাকে বের করতে হবে দুটি কম্পিউটারে মোট কতটি প্রবলেম আছে। জাস্ট সংখ্যা দুটিকে যোগ করে দিলেই হবে।
এবার দেখি Input এ কী বলা হয়েছে
প্রথমেই দেখা যাচ্ছে Input starts with an integer T (≤ 125), denoting the number of test cases. এর মানে হচ্ছে তোমার এই কোডটা কিন্তু মাত্র একটা ইনপুট সেটের জন্য কাজ করলে হবে না। ধর তোমার কোডে ইনপুট দিলাম 5 আর 10, কনসোলে রেজাল্ট হিসেবে 15 শো করেই যদি তোমার প্রোগ্রাম বন্ধ হয়ে যায় তাহলে হবে না। তোমার এই কোডে ধর আমি ২০ বার ইনপুট দিতে চাই। তাহলে তো বিশ বার প্রোগ্রামটা রান করতে হবে। এটা ঝামেলা না? এ জন্য এই সিসটেমটা করা যে শুরুতেই বলে দিব তোমার কোডে আমি কতবার ইনপুট দিব। এখানে সেই সংখ্যাটি T বা টেস্ট কেসের সংখ্যা। তাহলে কী দাঁঁড়াচ্ছে? শুরুতেই কোডে দুটি নাম্বার ইনপুট দেয়া হবে না। শুরুতে T ইনপুট দেয়া হবে। তোমার কাজ হল এই T সংখ্যক বার ইনপুট নিয়ে, প্রসেস করে আউটপুট দেখানো। এই কাজটা করতে হবে Loop এর মাধ্যমে।
input: (T); // টেস্ট কেস ইনপুট (T) for(i=1; i<=T; i++){ //T সংখ্যক বার পুরো কোডের কার্যক্রম চলবে input: (a, b); //লুপের ভিতরে প্রতিবার দুটি int ইনপুট হচ্ছে answer = a+b; // লুপের ভিতরে প্রতিবার যোগের কাজটা হচ্ছে output: ("Case %d: %d\n", i, answer); // লুপের ভিতরে প্রতিবার result প্রিন্ট হচ্ছে }
১ নম্বর লাইনে টেস্ট কেস ইনপুট নেয়া হল। লুপ চালানো হল 1 থেকে T পর্যন্ত। অর্থাৎ T এর মান ১০ হলে এই কোড একবার রান করলেই ১০ সেট ইনপুট এর জন্য ১০টা আউটপুট পাওয়া যাবে। ৩ নম্বর লাইনে আসল ইনপুটটা নেয়া হল। মানে দুটি কম্পিউটারে যতগুলো প্রবলেম রাখা আছে তার সংখ্যা। চার নম্বর লাইনে যোগের কাজটা করা হচ্ছে। ৫ নম্বর লাইনে আউটপুট দেখানো হয়েছে। লক্ষ্য করলে দেখবে আউটপুটটা বিশেষ ভাবে দেখানো হয়েছে। Case কথাটা লিখে একটা int (i) প্রিন্ট করা হয়েছে %d দ্বারা এরপর ‘:’ দিয়ে আরেকটি int (answer) প্রিন্ট করা হয়েছে। শেষে প্রিন্ট করা হয়েছে একটা new line (\n). এর কারণ হচ্ছে প্রবলেমের আউটপুট exactly এই ফরমেটেই চাওয়া হয়েছে। আমরা যদি বুদ্ধি করে কিছু লেখা কম বেশি করি তাহলেই verdict আসবে WA (Wrong Answer)! এখানে প্রিন্ট করা প্রথম সংখ্যাটা হচ্ছে এটি কত নম্বর টেস্ট কেসের রেজাল্ট তা, যেটা আমরা loop variable থেকে পেয়েছি। আর স্বাভাবিক ভাবেই দ্বিতীয় সংখ্যাটি হচ্ছে মূল উত্তর বা যোগফল। শেষের new line প্রিন্ট না করলেও করলেও কিন্তু WA খেতে হবে। কারণ আউটপুট সেকশনে বলা আছে For each case, print the case number and the total number of problems. See the samples for exact formatting. আর sample এ দেখানো আছে প্রতিটা আউটপুট এক এক লাইনে। নতুন লাইনে না গেলে আউটপুট সব এক লাইনে শো করবে।
আজ এ পর্যন্তই। এই পোস্টে অনেক অনেক সিম্পল কথাবার্তাও বেশ লম্বা করে বলেছি কারণ এটা প্রবলেম সলভিং এর প্রথম পোস্ট। টেস্ট কেস, নিউ লাইন ইত্যাদির বিষয়ে সামনে হয়ত আর তেমন একটা উল্লেখ করা হবে না। আমার এই পোস্ট পড়ে এক জনেরও যদি অনলাইন জাজে হাতেখড়ি হয় তাহলে এই লেখাটা স্বার্থক! তাই কেউ যদি লিখাটা পড়ে উপকৃত হয়ে প্রবলেমটা সলভ করে থাকেন অনুগ্রহ করে কমেন্ট করুন। অভিনন্দন আপনাকে।
ধন্যবাদ সবাইকে… 🙂
vyia, apnar post ta shottie khub upokari!!!!!
Thanks! 😀
ধন্যবাদ মতামতের জন্য। সাথেই থাকুন। যে কোন পরামর্শ থাকলে জানাতে সংকোচ করবেন না।
বন্ধুদের সাথে শেয়ার করুন। 😉
Presentation Error dekhai kn vai?
You should print Case. NOT case
int t,a,b,answer=0,i;
diye dako kaj hbe
vai lightoj te register korar somoi to kono password dite bollo na. ekhon login korte gele password cai. ki korte pari?
check your mail
খুব ভালো লাগলো
Vaia lightoj te register korar poreo kono email aseni. Tahole problem ta porbo kivabe?
onek onek thanks but vaia lightoj theke mail a kono password asena.. akhon ki korbo????
ভাইয়া,অসখ্য ধন্যবাদ। প্রোগ্রামিং ছেড়েই দিয়েছিলাম হতাশ হয়ে ,আবারও শুরু করলাম দেখা যাক কি হয়। 😀
আপনার জন্য শুভ কামনা।
ফী আমানিল্লাহ… 🙂
Osonkho dhonnobad vai.. Eta j koto ta proyojon cilo amar
আপনাকেও ধন্যবাদ