ইনফরমেটিক্স অলিম্পিয়াডের প্রস্তুতি (জাতীয় পর্যায়)

লাবীব রশিদ | ফেব্রুয়ারি ১৪, ২০১৪

ইনফরম্যাটিক্স অলিম্পিয়াডের বিভাগীয় পর্যায়ের বাঁধা উতরে যাবার পর সব প্রতিযোগীর মনেই থাকে এক ভাবনা - কিভাবে নেব জাতীয় পর্যায়ের প্রস্তুতি? যারা আগে কখনো এ প্রতিযোগীতার জাতীয় পর্যায়ে যোগ দেয়নি, স্বভাবতই তাদের মনে প্রশ্ন জাগে, কি ধরণের সমস্যা থাকবে জাতীয় অলিম্পিয়াডে? তোমাদের জন্যেই এই লেখা।

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

প্রোগ্রামিং দক্ষতা বাড়ানোর সবচে ভালো উপায় নিয়মিত প্রোগ্রামিং করা। তুমি হয়তো ভাবছো প্রোগ্রামিং শেখা কঠিন কাজ তাই তুমি জাতীয় অলিম্পিয়াডে অংশ নিতে পারবেনা। কিন্তু এটা সত্যি না। তুমি যদি যুক্তি দিয়ে গুছিয়ে চিন্তা করতে পারো এবং গণিতে ভালো হও তাহলে প্রোগ্রামিং শেখা তোমার জন্য খুবই সহজ কাজ। তাই প্রথম কথা হলো কখনো হতাশ হওয়া যাবেনা। জাতীয় পর্যায়ে প্রোগ্রামিং করার জন্যে শুধু C অথবা C++ ভাষা ব্যবহার করা যাবে। তাই এদের যে কোন একটা শেখাই ভাল হবে। বাংলা ভাষায় সি প্রোগ্রামিং শেখার সুন্দর একটা বই তামিম শাহরিয়ার সুবিনের “কম্পিউটার প্রোগ্রামিং”। বইটার অনলাইন ভার্সন পাওয়া যাবে এখানে। ইংরেজী কিছু খুজলে Herbert Schildt এর "Teach Yourself C” বইটা পড়তে পারো। অন্য যেকোনো ভালো বই পড়তে পারো,তবে "১৫ দিনে প্রোগ্রামিং শিক্ষা" ধরণের চটুল বই না পড়াই ভালো।

যারা প্রোগ্রামিং এর মূল বিষয়গুলো আয়ত্ত করে ফেলেছ, এবার আসি তাদের কাছে। আগেই উল্লেখ করেছি, জাতীয় অলিম্পিয়াডে প্রোগ্রামিং করে বিভিন্ন ধরণের সমস্যা সমাধান করতে হয়। তোমাদের উচিৎ হবে নিয়মিত এ ধরণের সমস্যা সমাধানের অনুশীলন করা। প্রশ্নের ধরন কেমন হতে পারে জানতে চাইলে দেখে নিতে পারো বিগত বছরের প্রশ্ন। বিগত কিছু বছরের প্রশ্ন পাওয়া যাবে এখানে। সাধারণত জাতীয়, আন্তর্জাতিক পর্যায়ে গ্রাফ থিওরি, নাম্বার থিওরি, ডাইনামিক প্রোগ্রামিং, ডাটা স্ট্রাকচার, কম্বিনেটরিক্স, কম্পিউটেশনাল জিওমেট্রি ইত্যাদি ধরণের সমস্যাই বেশী আসতে দেখা যায়। এসব সমস্যার সমাধান করার জন্যে কিছু অ্যালগোরিদম জানা থাকলে সুবিধা হয়। অ্যালগোরিদম শেখার জন্যে তোমরা বিভিন্ন ভাল ওয়েবসাইট আর ব্লগ এর সাহায্য নিতে পারো। এখানে এরকম কিছু সহায়ক সাইটের লিঙ্ক এখানে দেওয়া হলঃ

স্টিভেন হালিম এবং ফেলিক্স হালিমের কম্পিটিটিভ প্রোগ্রামিং ইবুক

টপকোডার অ্যালগরিদম টিউটোরিয়াল

শাফায়েত আশরাফ এর ব্লগ

ইকরাম মাহমুদ(ফাহিম) এর ব্লগ

Progক্রিয়া

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

ইউনিভার্সিটি অফ ভ্যালাদোলিদ অনলাইন জাজ ওরফে ইউভিএ: ইউভিএ বোধহয় বাংলাদেশের সবচেয়ে জনপ্রিয় জাজ। অনেক পুরোনো জাজ এই ইউভিএ। এই সাইটে হাজার হাজার প্রবলেম আছে। প্রাকটিসের জন্যে ইউভিএ-টুলকিট বা ইগর এর টুল ব্যবহার করা যায়। সহজে ইউভিএ-তে অনুশীলন করার জন্যে uHunt ব্যবহার করতে পার। মিগুয়েল রেভিয়ার বই ‘প্রোগ্রামিং চ্যালেঞ্জেস’ আর ফেলিক্স ও স্টিভেন হালিমের বই ‘কম্পিটিটিভ প্রোগ্রামিং’ এই সাইটের প্রবলেমের উপর ভিত্তি করে লেখা।

কোডফোর্সেস আরেকটি অসাধারণ সাইট। এখানে কনটেস্ট প্রতি সপ্তাহে একাধিক কনটেস্ট হয়। রেটিং সিস্টেম অনেকটা টপকোডারের মতো তবে নিয়মকানুনগুলো আইসিপিসি কনটেস্টের মতো।

লাইট ওজে: বাংলাদেশি অনলাইন জাজ। নতুনদের জন্যে আদর্শ। বানিয়েছেন জানে আলম জান যিনি ২০০৯ সালের এসিএম ফাইনালিস্ট, বর্তমানে গুগলে কর্মরত। প্রবলেমগুলো ক্যাটাগরী অনুযায়ী ভাগ করা।

ইউসাকো(USACO): আমেরিকান ইনফরমেটিক্স ট্রেনিং সাইট। ইনফরমেটিক্স অলিম্পিয়াডের প্রস্তুতির জন্য অন্যতম সেরা সাইট।

**ক্রোয়েশিয়ান অলিম্পিয়াড: এই সাইটটিও ইনফরমেটিক্স অলিম্পিয়াডের প্রস্তুতির জন্য অনেক ভাল।

টপকোডার: সারাবিশ্বের প্রোগ্রামারদের মাঝে অত্যন্ত জনপ্রিয় একটা প্রোগ্রামিং কন্টেস্ট। অ্যালগোরিদম ট্র্যাকে মাসে গড়ে ৩ টার মতো কনটেস্ট হয়। ৭৫ মিনিট সময়ে ৩টা প্রবলেম সলভ করতে বলা হয়।

কোডশেফ: ভারতীয় কোম্পানী Directi এর স্পন্সরশীপে আয়োজিত কনটেস্ট। প্রতি মাসে ১০ দিন ব্যাপী অত্যন্ত চ্যালেঞ্জিং কিছু প্রবলেম সলভ করতে দেওয়া হয়। আবার কুক-অফ ও লাঞ্চটাইম নামের কম সময়ের দুটি কনটেস্ট আয়োজন করে তারা। লাঞ্চটাইমে পুরষ্কৃত করা হয় স্কুল-কলেজের সেরা ১০ প্রতিযোগীকে!

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

সারাতভ ইউনিভার্সিটি অনলাইন জাজ: এই রাশান জাজটিতে মাত্র ৫০০ এর মতো প্রবলেম আছে। কিন্তু প্রতিটা প্রবলেমই মানসম্মত। একেবারে নতুনদের জন্যে উপযোগী নয়।

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

টাইমাস অনলাইন জাজ আরেকটি রাশান জাজ। মূলত রাশান কনটেস্টের প্রবলেম আছে।

সাধারণত কিছু অনলাইন জাজে সমস্যাগুলো বিষয়ভিত্তিক কিছু ক্যাটাগরিতে ভাগ করা থাকে, যেমন USACO, LightOJ (দেখতে হলে রেজিস্ট্রেশন করতে হবে) ইত্যাদি। এ ধরণের কোন জাজ থেকে একটা বিষয় নির্বাচন করে সে বিষয়ের সমস্যাগুলো পরপর সমাধান করা যেতে পারে।

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

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

সবার জন্যে শুভকামনা রইল। জয় হোক প্রোগ্রামিং এর!


লাবীব রশিদ

অস্ট্রেলিয়াতে অনুষ্ঠিত ২০১৩ আন্তর্জাতিক ইনফরমেটিক্স অলিম্পিয়াডে অংশগ্রহণকারী বাংলাদেশ দলের সদস্য।