কম্পিটিটিভ প্রোগ্রামিং গাইডলাইন - আরিয়ান কবির

 

নতুনদের জন্য কম্পিটিটিভ প্রোগ্রামিং গাইডলাইন

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

 

ধাপ — ১ :

কম্পিটিটিভ প্রোগ্রামিং শুরু করার আগে আপনাকে যে কোন একটি প্রোগ্রামিং ল্যাঙ্গুয়েজে ভাল দক্ষতা অর্জন করতে হবে ( যেমন : সি/সি++, পাইথন ,জাভা)। আমি মনে করি প্রথমে সি/সি++ দিয়ে কম্পিটিটিভ প্রোগ্রামিং শুরু করা ভাল । কারন প্রোগ্রামিংয়ের মৌলিক বিষয়গুলো বোঝার জন্য সি/সি++ অনেক সহায়ক । আর আমাদের সকল বিশ্ববিদ্যালয়ে প্রথম সেমিস্টারে সি/সি++ কোর্স পড়ানো হয়। তাই মনে করি এটা শিখতে কারও সমস্যা হওয়ার কথা না। আর যদি আপনার প্রোগ্রামিং ল্যাঙ্গুয়েজে সমস্যা থেকে থাকে তাহলে নিচের লিংক গুলো থেকে শিখে নিবেন।

1. http://cpbook.subeen.com

2. https://www.youtube.com/watch?v=J8CImQO0Ogw&list=PLym69wpbTIIEHqvuc5ig7uz1fUKbHhVz8

3. https://www.hackerearth.com/practice/codemonk/

4. http://www.fredosaurus.com/notes-cpp/

5. http://shoshikkha.com/archives/category/computer-science/language/সি

 

ধাপ — ২ :

আশা করি আপনার এখন একটি প্রোগ্রামিং ল্যাঙ্গুয়েজে ভাল দক্ষতা অর্জন হয়েছে, আপনি এখন যেকোন ছোটখাটো প্রবলেম এর সমাধান কোড করে করেতে পারেন। তাহলে এখন আপনি কম্পিটিটিভ প্রোগ্রামিং শুরু করার জন্য প্রস্তুত । এখন আপনাকে একটা অনলাইন জাজ সম্বন্ধে জানতে হবে তাহল URI OJ : www.urionlinejudge.com। এখন বলতে পারও এত জাজ থাকতে URI কেন ? আসলে দেখা যাই যারা নতুন প্রোগ্রামিং শুরু করে তাদের লজিক ও প্রোগ্রামিং ল্যাঙ্গুয়েজের বেসিক এর দুর্বলতার কারনে UVA বা Codeforces প্রবলেমগুলো সল্ভে করতে প্রথম দিকে অনেক সমস্যা পড়ে, যার ফলে তারা ১০-১৫ টা প্রবলেম সল্ভে করার পর আর সামনের দিকে আগাতে পারে না । যার ফলে কম্পিটিটিভ প্রোগ্রামিং তাদের কাছে হার্ড মনে হয় এবং তারা হতাশ হয়ে এই জায়গা থেকে ঝরে পড়ে যায় । তাই আমি মনে করি URI OJ দিয় শুরু করা বিগিনারদের জন্য ভাল। এখন URI OJ রেজিস্ট্রেশন করে ওই জাজ এর বিগিনার ক্যাটাগরির যে প্রবলেম গুলা আছে সে গুলা থেকে মোটামোটি ১০০-১২০ টি প্রবলেম এর সমাধান করতে হবে তাহলে আপনার বেসিক জিনিস গুলো ক্লিয়ার হয়ে যাবে। এছাড়া আরও কিছু অনলাইন জাজ আছে সাথে সেগুলার বিগিনার প্রবলেম গুলো সল্ভ করতে পারও।

 

Toph OJ : https://toph.co/problems/easy-problems

Dimik OJ : http://cpbook.subeen.com/p/blog-page_11.html (বাংলায় প্রোগ্রামিং সমস্যা )

এছাড়া এগুলোর পাশাপাশি আরও কিছু বিষয় সম্পর্কে জানতে হবে

1. Online Judge Verdicts: https://hellohasan.com/2016/07/07/অনলাইন-জাজ-সিরিজ-৪-oj-verdicts/

2. Test Case & EOF : https://hellohasa n.com/2016/07/07/অনলাইন-জাজ-সিরিজ-৬-test-case-eof/

3. প্রোগ্রামিং কনটেস্ট কি : http://subeen.com/what-is-programming-contest/

4. কেন আমি প্রোগ্রামিং শিখবো : http://www.shafaetsplanet.com/planetcoding/?p=1437

ধাপ — ৩ :

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

1. http://uva.onlinejudge.org : এই সাইটে অনুশীলনের জন্য প্রচুর সমস্যা দেওয়া আছে নতুন প্রোগ্রামারদের জন্য এটি বেশ ভালো জায়গা । বিগিনারদের জন্য কিছু প্রবলেম লিস্ট আছে সেগুলো দেখে আপনি অনুশীলন করতে পারেন । http://actsj13.blogspot.com/2015/07/uva-some-easy-problems-for-beginners.html এছাড়া অনলাইন সার্চ দিলে আরও অনেক গুলো লিস্ট পাবে সে গুলো থেকেও অনুশীলন করতে পারও।

2. http://lightoj.com : এই সাইটে বিগিনারদের জন্য কিছু প্রবলেম দেওয়া আছে সে গুলো অনুশীলন করতে হবে । এই প্রবলেম গুলো অনেক ইন্টারেস্টিং এবং লজিকেল।

3. http://codeforces.com : বর্তমানে সব থেকে জনপ্রিয় অনলাইন জাজ গুলোর অন্যতম হল এটি । এই জাজে নিয়মিত বিভিন্ন ক্যাটাগরির অনলাইন প্রোগ্রামিং প্রতিযোগিতার হয়ে থাকে ( প্রতি মাসে ১০-১২ টি )। বিগিনারদের জন্য আলাদা করে Div2, Div3, Div4 ক্যাটাগরির কন্টেস্ট হয়ে থাকে যেখানে A,B,C প্রবলেম গুলা তুলনামূলক সহজ থাকে । এছাড়া অনুশীলন করার জন্য অনেক প্রবলেম দেওয়া আছে যা বিগিনারদের জন্য অনেক হেল্পফুল।

4. http://www.codechef.com : এটিও প্রোগ্রামিং প্রতিযোগিতার জন্য একটি জনপ্রিয় অনলাইন জাজ । এই জাজে প্রতি মাসে ৩টি প্রোগ্রামিং কন্টেস্ট হয়ে থাকে যার মধ্যে একটি ১০ দিন ব্যাপ্তি হয়ে তাকে এবং অনুশীলন করার জন্য অনেক প্রবলেম দেওয়া আছে ।

এছাড়া আরও অনেক অনলাইন জাজ আছে, আপনারা নিজে নিজে দেখতে পারেন HackerRank, HackerEarth , AtCoder, TopCoder, SPOJ, Aizu ইত্যাদি ।

ধাপ — ৪ :

এখন আপনাকে ডেটা স্ট্রাকচার ও অ্যালগরিদম এর বেসিক বিষয়-গুলো জানতে হবে (Sorting, Searching, Array, Linked List, Stack, Queue, Tree, BFS, DFS) । ডেটা স্ট্রাকচার ও অ্যালগরিদম জানার জন্য বাংলায় সব থেকে ভাল টিউটোরিয়াল হল তামিম শাহরিয়ার সুবিন ভাই এর ডেটা স্ট্রাকচার ও অ্যালগরিদম টিউটোরিয়াল সিরিজ । ডেটা স্ট্রাকচার ও অ্যালগরিদম এর বেসিক বিষয় জানা হয়ে গেলে আপনাকে সি++ এর STL বিষয় জানতে হবে (vector, stack, queue, priority_queue, set, map, iterator etc).

1.ডেটা স্ট্রাকচার ও অ্যালগরিদম : https://www.youtube.com/watch?v=Mz9BlmST31w&list=PLym69wpbTIIEOesltWGUsVnY9HDWbJit_

2. ডেটা স্ট্রাকচার ও অ্যালগরিদম : https://www.hackerearth.com/practice/data-structures/arrays/1-d/tutorial/

3. Tanvir’s Blog: C++ STL : https://tanvir002700.wordpress.com/2016/04/15/c-stl-tricks1/

4. শাফায়েতের ব্লগ : http://www.shafaetsplanet.com/

আমি আপনাদের আরও কিছু ইম্পরট্যান্ট ডকুমেন্ট এর লিংক নিচে দিয়ে দিচ্ছি আশা করি আপনাদের উপকারে আসবে ।

1. https://github.com/n3o-d4rk3r/Competitive-Programming-Reference-Bangla

2. https://github.com/kamran-11b/Competitive_Programming

3. https://github.com/kamran-11b/Competitive-programming-resourse-Link

আপনি যদি এই পথটুকু পাড়ি দিয়ে আসতে পারেন তাহলে সামনের দিকে যাওয়ার পথ আপনি নিজে নিজে পেয়ে যাবেন আশাকরি ।

 

 

 

 

Post a Comment

0 Comments