You are currently viewing অনলাইন জাজ-এর দেয়া রায় ও তার ব্যাখ্যা

অনলাইন জাজ-এর দেয়া রায় ও তার ব্যাখ্যা

কম্পিটিটিভ প্রোগ্রামিং করতে এসে আমাদের সবাইকেই প্রথমে অনলাইন জাজের সাথে পরিচিত হতে হয়। অনলাইন জাজের কাজ কী? অনলাইন জাজ হচ্ছে “প্রোগ্রাম বিচার করার একটা প্রোগ্রাম”। 

আরেকটু পরিস্কার ভাবে বলা যায় প্রোগ্রামিং প্রতিযোগিতায় সমস্যা সমাধানের পর সোর্স কোডটিকে স্বয়ংক্রিয়ভাবে যে প্রোগ্রামটির মাধ্যমে মূল্যায়ন করা হয় তা-ই অনলাইন জাজ(Online Judge) বা OJ। এই প্রোগ্রামগুলো প্রবলেম সেটাররা সেট করে থাকেন। তারা প্রবলেম তৈরী করেন এবং একই প্রবলেম এর জন্য ইনপুট-আউটপুটের সেট তৈরী করেন। সমধানকারী তাদের সোর্সকোড সাবমিট করার পর অনলাইন জাজ ঐ সমাধানের কার্যকরীতা মূল্যায়ন করে একটি ফলাফল বা রায় বা Verdict প্রদর্শন করে।

যেহেতু কম্পিউটার একটি সহজ সরল নিরপরাধ যন্ত্র, তাই নিজেকেই দায়িত্ব নিয়ে Verdict দেখে এবং বুঝে প্রোগ্রামের ভুল বের করতে হবে। অনলাইন জাজ-এ সমস্যা সমাধান করতে এসে নতুনদেরকে এই Verdict নিয়ে চিন্তায় পড়তে হয়। তাই এখানে সবচেয়ে বেশি প্রচলিত কয়েকটি Verdict নিয়ে আলোচনা করলাম।

Runtime Error বা RE:

আউটপুট জেনারেট করতে অনেক সময় প্রোগ্রাম ক্রাশ করে বা বন্ধ হয়ে যায় , তখন এই ফলাফল পাওয়া যায়। বিভিন্ন ভাবে এই ধরনের সমস্যা হতে পারে।

১। অ্যারেতে অনাকাঙ্ক্ষিত ইনডেক্স এর ব্যবহার করলে ,

২। ভূলবশত শূন্য দিয়ে কোনো সংখ্যাকে ভাগ করলে,

৩। মেমোরী এলোকেশন এ ভুল করলে কিংবা নাল পয়েন্টার ব্যবহার করলে এই ধরনের সমস্যা দেখা দিতে পারে।

তাই অনলাইন জাজ গুলো থেকে এই আউটপুট পেলে এই বিষয়গুলো খতিয়ে দেখতে হবে।

Time Limit Exceeded বা TLE:

সাধারণত প্রত্যেকটি প্রবলেম এর জন্য একটি নির্দিষ্ট সময় বরাদ্দ থাকে। প্রতিযোগীর দেওয়া প্রোগ্রামটি যদি ঐ নির্দিষ্ট সময়ে Execute করতে ব্যর্থ হয় তাহলে অনলাইন জাজ এই সিদ্ধান্ত প্রদান করে।

তাই এই ধরনের সমস্যা সমাধানের জন্য Time Complexity নিয়ে সচেতন হতে হবে। প্রয়োজন অনুযায়ী অ্যালগোরিদম পরিবর্তন করতে হবে প্রোগ্রামটিকে আরো efficent করার জন্য।

Memory Limit Exceeded বা MLE:

Time এর মত প্রত্যেক প্রবলেম এর জন্য মেমোরী নির্দিষ্ট করে দেওয়া থাকে। প্রোগ্রামটি চলতে তার থেকে বেশি মেমরী খরচ করে ফেললে এই ফলাফল আসে।

এই সমস্যা মোকাবিলা করার জন্য Space Complexity নিয়ে সচেতন হতে হবে এবং মেমোরী ইফিসিয়েন্ট প্রোগ্রাম লেখার চেষ্টা করতে হবে।

Compilation Error বা CE:

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

তাই সোর্সকোড সাবমিট করার আগে নিজস্ব IDEতে রান করে যাচাই করে নেওয়া উচিত।

Output Limit Exceeded বা OLE:

আমাদের সাবমিট করা আউটপুট যদি কাঙ্ক্ষিত আউটপুট থেকে অনেক বেশি আউটপুট বা অতিরিক্ত তথ্য প্রিন্ট করে বা করতে থাকে তখন এই ফলাফল দেখায়। ভুলক্রমে ইনফিনিটি লুপ ব্যাবহারে অনেক সময় এই সমস্যা দেখায়। এছাড়াও অন্য কোনো কারনে এই ধরনের ভুল হতে পারে। কোনো কোনো অনলাইন জাজ একই ভুলের কারনে WA প্রদর্শন করে।

Restricted Function বা RF:

অনলাইন জাজ ভেদে বিশেষ কিছু ফাংশন ব্যাবহারের নিশেধাজ্ঞা থাকে।  যেমন কোনো কোনো অনলাইন জাজে freopen(), fork() ফাংশনগুলো ব্যবহার করলে এই ফলাফল দেখায়। আবার একই ফাংশন গুলো ব্যবহার করলে কোনো কোনো অনলাইন জাজে WA দেখায়। মোটকথা কম্পিটিটিভ প্রোগ্রামিং এ এই ধরনের ফাংশনগুলোর ব্যাবহার এড়িয়ে চলতে হবে।

Presentation Error বা PE:

যখন জাজ সঠিকভাবে কোড কম্পাইল করতে পারে কিন্তু আউটপুটের আগে বা পরে অতিরিক্ত স্পেস বা নিউলাইন প্রিন্ট হয় তখন এই ফলাফল আসে। এই সমস্যা এড়াতে প্রশ্নসেটে উল্লিখিত প্যাটার্নে আউটপুট না দেওয়ার চেষ্টা করতে হবে।

Wrong Answer:

সাবমিট করা সোর্সকোডের আউটপুটের সাথে যদি উক্ত প্রবলেম এর কাঙ্ক্ষিত আউটপুটের সাথে না মিলে তাহলে অনলাইন জাজগুলো এই রায় দেয়। বেশ কয়েকটি কারনে WA দেখাতে পারে। তাদের মধ্যে কয়েকটি হলো-

১। আউটপুট ফরমেটিং এ ভুল করলে অনেক সময় এই সমস্যায় পড়তে হয়। আউটপুটে স্পেস কম বা বেশি দেওয়া যাবেনা এবং নমুনা আউটপুটে ছোট কিংবা বড়হাতের অক্ষর যেভাবে আছে ঠিক ঐভাবেই দিতে হবে। লক্ষ্য রাখতে হবে নমুনা আউটপুটে যেমন উদাহরণ আছে প্রোগ্রামের আউটপুট যেন হুবহু ঐরকমই হয়।

২। লাইন ব্রেকার ব্যাবহার না করলেও কোনো কোনো অনলাইন জাজ এই ফলাফল দেখায়।

৩। লজিক বুঝতে সমস্যা হলে সবচেয়ে বেশি এই সমস্যা দেখা যায়। তাই শুধুমাত্র নমুনা ইনপুট এর উপর নির্ভর না করে প্রশ্নে দেওয়া ইনপুট রেঞ্জ দেখে কর্নার কেসগুলো দিয়ে প্রোগ্রামটি যাচাই করে নিতে হবে।

এসব ছাড়াও আরো অনেক কারনে রং এন্সার দেখাতে পারে। অনলাইন জাজ-এ কোড সাবমিট করলে এই Verdict এর কাছে সবচেয়ে বেশি সম্মুখীন হতে হয়। এই Verdict পেয়ে হতাশ না হয়ে ধীরস্থির ভাবে প্রোগ্রামের ভুল বের করতে হবে। নিজ দায়িত্বে ভুল বের করার অভ্যাস প্রবলেম সল্ভারের দক্ষতা কয়েক গুনে বাড়িয়ে তুলে। 

Accepted:

অনলাইন জাজে-এর Verdict হিসাবে ‘Accepted’ এর দেখা পেলে আপনাকে অভিনন্দন । আপনার কোডটি কোনো রকম সমস্যা সৃষ্টি করা ছাড়াই নির্দিষ্ট সময়ের মধ্যে, নির্দিষ্ট পরিমান মেমোরী ব্যবহার করে প্রবলেম সেটারের তৈরী করা আউটপুট সেটের অনুরূপ আউটপুট দিতে পেরেছে। অর্থাৎ আপনার সমধানটি সম্পূর্ণ সঠিক।

এই আউটপুটটি পেলে আপনি মুচকি হেসে পরবর্তী পরবর্তী সমস্যা সমাধানের দিকে অগ্রসর হোন।

হ্যাপী কোডিং!

Leave a Reply