আমাদের কথা খুঁজে নিন

   

কিছু কথা (প্রসঙ্গ শাহজালাল বিজ্ঞান ও প্রযুক্তি বিশ্ববিদ্যালয় আন্তঃ বিশ্ববিদ্যালয় প্রোগ্রামিং প্রতিযোগিতা )

(This writing is by Md. Mahbubul Hasan, team member of the campion team of that contest. Reposted with his consent.) আমাদের দেশে প্রোগ্রামিং প্রতিযোগিতা অনেক অনেক দিনের কালচার- একটি ভাল কালচার যা আমাদেরকে গতানুগতিক লেখাপড়ার বাইরে কিছু ভাবতে শিখিয়েছে। গণিত অলিম্পিয়াড যেমন আমাদেরকে স্কুল কলেজের ছেলে মেয়েদের একটি উৎসবে পরিণত হয়েছে যেখানে তারা আনন্দের সাথে গণিত করে ঠিক তেমনি প্রোগ্রামিং প্রতিযোগিতাও University এর ছাত্র ছাত্রীদের কাছে এমনি এক আনন্দের উৎস যেখানে ছেলে মেয়েরা আনন্দের সাথে প্রোগ্রামিং করছে এবং শুধু অংশগ্রহণেই সীমাবদ্ধ থাকা নয় এর আন্তর্জাতিক অঙ্গনেও আমাদের বাংলাদেশীদের বিচরন থেকেই বুঝা যায় আমরা এই ক্ষেত্রে কতটা এগিয়ে। কি World Finals, কি ICPC Challenge, কি Code Jam, কি Topcoder, কি Codeforces, কি Codechef – সর্বত্র আমরা খুব ভাল ভাবেই লড়ে যাচ্ছি অন্যান্য দেশের সাথে। আমি ঠিক জানিনা কেউ জিনিসটা খেয়াল করেছে কিনা যে আমাদের আরও একটি গর্বের বিষয় আছে আর তা হল Problem Setter. World Finals এ কিন্তু Judge সংখ্যা হাতে গুনে মোটামুটি ১০ জনের মত হবে আর তাদের একজন আমাদের দেশের। এবং আমরা যে Problem setting এ কত দক্ষ তার প্রমাণ এশিয়া এর বিভিন্ন Regional এ আমাদের দেশ থেকে Problem প্রেরণ।

যদি World Finals এর Judge হওয়া খুব সহজই হত তাহলে কমপক্ষে একজন India থেকে Judge অবশ্যই থাকত। যাই হোক আমি সে বিষয়ে কোন তর্কে যেতে চাই না। তবে এটা সন্দেহাতীত যে বিগত কয়েক বছরে যে পরিমাণ Programming Contest হয়েছে এবং প্রায় সব গুলোতেই খুব অল্প সময়ের মাঝে অনেক সুন্দর সুন্দর Problem দেবার জন্য আমি ব্যাক্তিগত ভাবে Problem Setter দের আন্তরিক ভাবে কৃতজ্ঞতা জানাচ্ছি। আমার বিগত ৬ বছরের প্রোগ্রামিং কন্টেস্ট জীবনে বেশ কিছু Contest এই আমাদের team প্রশ্ন ভুল/ambiguity বা Judge Data ভুল এর সম্মুখীন হয়েছি এবং এক্ষেত্রটিতে আমি Judge মহলে খুবি পরিচিত এটা আসলে সবারই মোটামুটি জানা। এবং এজন্য আমাদের team name ২০০৮ সালে “BUET Judge Crashers” ছিল।

কিছু দিন আগে শাহজালাল বিজ্ঞান ও প্রযুক্তি বিশ্ববিদ্যালয় এ হয়ে যাওয়া প্রোগ্রামিং প্রতিযোগিতার Problem গুলি আমার কাছে খুবই চমৎকার লেগেছে, কিন্তু Overall Contest নিয়ে আমি ব্যাক্তিগত ভাবে খুবি হতাশ। , কিন্তু Problem এ ভুল থাকার যে effect তা একজন ভুক্তভোগী প্রতিযোগী ব্যাতিত আর কারো বুঝবার কথা নয়। যারা contest করেছে তারা খুব ভালো করেই জানে যে একটি মাত্র ভুল problem কিভাবে একটা contest পুরোপুরি নষ্ট করে দিতে পারে। সেখানে SUST contest এর ৩ টি problem এ ভুল এবং judging অদক্ষতা আমার জানা মতে শুধু আমাদেরই নয় Top 10 এর প্রায় প্রত্যেকটি দলকেই ভুগিয়েছে। এমনকি আমি বলব হয়ত যদি contest টি সুষ্ঠুভাবে হতো তাহলে হয়তো Top 10 এর চেহারা এমন নাও হতে পারত।

বাইরের কিছু দলও Top 10 এ প্রবেশ করতে পারত। Contest কালীন কিছু অসঙ্গতির কথা আমি তুলে ধরতে চাই। এখানে উল্লেখিত সমস্ত মন্তব্য শুধু আমার ব্যক্তিগত নয়, এটি আমাদের সমগ্র Programming Contest অনুরাগীদের মন্তব্যের প্রতিফলন। ১. Problem A ( Give Away): Problem টি পড়লেই যে কারো প্রথম প্রশ্ন হবে Problem টি কি Case sensitive? এবং আমি মনে করি কোনো standard problemset এ এরকম Ambiguity থাকা উচিত না, বিশেষ করে Give away তে তো না। কারন, অনেক খারাপ দল (With due respect to all the teams) জিনিসটা না ভেবেই করে ফেলবে আর ভালো দলরা এটা ভেবে সময় নষ্ট করবে, এমনকি কেউ বেশি ভেবে ভুল কোড ও submit করতে পারে, যার ফলে Penalty বেড়ে যাবে।

আমি যদি ভুল না করি তাহলে প্রায় আধা ঘণ্টারও পরে এই বিষয়ে Clarification দেয়া হয়েছে যেখানে এটার প্রথম Accepted Solution পাওয়া গেছে ৬ মিনিটের মাথায়। ২. Problem D (Sudoku Type problem): এই Problem টিতে খুব ভালভাবে উল্লেখ ছিল যে, প্রতিটি আয়তক্ষেত্র হবে disjoint, অর্থাৎ কেউ কাউকে ছেদ করবে না। কিন্তু Data Set এ এমনও Case ছিল যাতে এই condition টি satisfy করে না। আমার জানা মতে Top 5 এর একটি দল এই সমস্যার কারনে প্রায় 1.5 ঘণ্টা নষ্ট করেছে। ৩. Problem I (a graph problem): Problem টির statement এ বেশ কয়েকটি জায়গায় অসঙ্গতি আছে।

প্রথমত, এখানে Maximum Probablity বের করতে বলা হয়েছে যার এই Problem এর সাথে কোনও সঙ্গতি নেই। এটি অবশ্য অতটা সমস্যা হতো না, কারন মোটামুটি guess করে নেয়া যায় যে হয়তো এখানে শুধু Probability বুঝানো হয়েছে, কিন্তু এই সমস্যাটির অন্য একটি লাইন এ আরও একটি অসঙ্গতি ব্যাপারটাকে Complex করে তোলে। এখানে বলা হয়, “Shortest path” কিন্তু এখানে Problem এ কোথাও দূরত্বের কথা উল্লেখ নেই। সেহেতু প্রথম অপশন হল Hop, কিন্তু Problem টি পড়ে মনে হয় হয়তো এখানে Cost বুঝানো হয়েছে। আমরা Cost এর সাপেক্ষেই Shortest- অর্থাৎ Shortest এর অর্থ Cheapest ধরে Problem টি কোড করি এবং কোডে ভুল থাকার কারনে আমরা তাতে Wrong Answer পাই।

কিন্তু আমরা Problem statement- Ambiguous হওয়ায় confused হয়ে পড়ি এবং judge দের সমস্যা যুক্ত sentence টি উল্লেখ করে clarification পাঠাই। কিন্তু আমাদের জবাবে বলা হয়- “Read The Problem Statement Carefully”. যাই হোক আমাদের সৌভাগ্য যে আমরা পরবর্তীতে এই সমস্যার সমাধান করি। কেউ যদি Ranklist এ খেয়াল করেন তাহলে দেখবেন, আমরা ৯০ মিনিট এ ৪ টি সমস্যার সমাধান করে ৫ম সমস্যা সমাধান করি ২৪৮ মিনিটে, এর মানে প্রায় ৩ ঘণ্টা পর। এতক্ষণ আমরা এই প্রব্লেম এই আটকে ছিলাম বলা চলে। আমরা এই Problem টির 3 রকম interpretation করে এর মাঝে 3 টি কোডও করি।

শুধু আমরা নই, আমার জানামতে contest এর প্রায় অনেক team ই এই সমস্যায় পরেছিল। এবং পরবর্তীতে আমরা এও জানতে পারি যে, Top 10 এর একটি দল একই Clarification পাঠিয়ে তারা judge দের নিকট থেকে response পেয়েছিল। অথচ এরকম একটি Major Clarification এর ক্ষেত্রে সকল team কে notify করা হয়ে থাকে। আমি জানি না, আমরা সেই clarification টা খেয়াল করি নাই, নাকি আসলেই সেই clarification টি সকল দলকে জানানো হয় নাই, নাকি আমাদের pc^2 এর সমস্যা। অন্যান্য দল আমার এ সন্দেহ দূর করতে পারবে বলে আশা করি।

এর পরেও আমরা যতটুকু জেনেছি এই প্রব্লেম এর ডাটাতেও ভুল ছিল। এমনকি এতো কিছুর পরও যদি ভালভাবে দেখা হয়, এই প্রব্লেমটির যে Solution টি Accept করা হয়েছে সেটিও ভুল। Judge দের এরকম ভুল Problem এর কারনে একটি দল অনেক সামনে থেকেও অনেক পিছিয়ে যেতে পারে, বরং আমি বলবো গিয়েছে। ৪. Problem G (Packing circles in rectangle): হয়তো হাস্যকর শুনাবে কিন্তু এ কথা সত্যি যে, contest শেষ হবার ৩০ মিনিট আগে এই প্রব্লেম এর Sample এ ভুল আছে এ কথা আমাদের জানানো হয়, যদিও আমি বুঝি যে হয়তো সেই ভুলটা অতটা Major না, কিন্তু You never know, how one solves a problem.তাই ভুল- ভুলই। আমরা Problem I এর জন্য অন্যকোনো Problem আর attempt করতে পারি নাই।

অন্যগুলোর Data তাই চেক করে দেখবেন আশা করি। এত এত Fault এর পরও Prize Giving Ceremony তে যা হল তা অত্যন্ত লজ্জাজনক বলেই আমি মনে করি। যেখানে কিছু কিছু দল সমস্যায় পরে contest ঠিক ভাবে করতে পারে নাই, যেখানে কিছু দল ভাগ্যের জোরে এসব সমস্যায় পড়ে নাই বলেই হয়তো ভালো Rank পেয়েছে, হয়তো আমরাও সব সমস্যায় পরলে আর Champion হতে পারতাম না সেখানে ৩০০০ টাকা ফি দিয়ে ( যেখানে maximum contest ই ১৫০০-২৫০০ টাকা ফি দিয়ে সাধারনত হয়ে থাকে, ৩০০০ টাকা ফিতেও হয়েছে যদিও কিছু জায়গায় ) এভাবে Contest এ অংশগ্রহন করার/আয়োজনের কোন মানে দেখি না। পরিশেষে এই Contest এ জড়িত সকল Organizer, Judge এবং Problem Setter দের প্রতি যথোপযুক্ত শ্রদ্ধাপূর্বক একটি অনুরোধ, এর পর থেকে Problem Set এর সময় এবং Judging এর সময় প্রয়োজনীয় সাবধানতা অবলম্বন করবেন। আর যদি Contest এর Quality রক্ষা করতে না পারেন তাহলে এরকম করে Contest আয়োজন করার কোন মানে নেই এবং এরকম Quality চলতে থাকলে BUET তো দূরে থাক আমার মনে হয় না অন্য কোন ভালো দলও আর অংশগ্রহণ করবে।

( আমার এই নোটটি লেখার উদ্দেশ্য কোন Team, Judge বা Problem Setter কে ছোট করা নয়, আমি আগেই বলেছি এই Problem Set টি আমার কাছে খুবই ভালো লেগেছে, কিন্তু আমি Data Set এ ভুল এবং Judging এর নিম্ন মান নিয়ে খুবই হতাশ। কেউ যদি এই লিখায় কষ্ট পেয়ে থাকেন আমি আন্তরিকভাবে ক্ষমা চেয়ে নিচ্ছি। ) ।

অনলাইনে ছড়িয়ে ছিটিয়ে থাকা কথা গুলোকেই সহজে জানবার সুবিধার জন্য একত্রিত করে আমাদের কথা । এখানে সংগৃহিত কথা গুলোর সত্ব (copyright) সম্পূর্ণভাবে সোর্স সাইটের লেখকের এবং আমাদের কথাতে প্রতিটা কথাতেই সোর্স সাইটের রেফারেন্স লিংক উধৃত আছে ।