এতবড় পোস্ট পড়ার সময় না থাকলে বা পড়তে মন না চাইলে নিচের টপিক লিস্ট থেকে conclusion এ চলে যান।তবে আমি সম্পূর্ণ পোস্ট পড়ার অনুরোধ করব । Compititive Programming কী সেটা জানার আগে Programing কী সেটা জেনে নেই।
Programming কী?
কমপিউটার একটি গাধা টাইপের যন্ত্র।গাধাকে যেমন যেকোনো কাজে লাগিয়ে দিলে কোন কথা ছাড়াই ওই কাজ করতে থাকে , কমপিউটারকেও তেমনি কোন কাজে লাগিয়ে দিলে সেই কাজ করতে থাকে।গাধার নাহয় পিঠে বোঝা উঠিয়ে দেয়া যায় তাই বলেতো আর কমপিউটারের পিঠে বোঝা দেয়া যায় না।
তবে কম্পিউটারের কাজ কী?
কমপিউটারের কাজ হলো কমপিউট করা অর্থাৎ হিসাব করা।এই গাধা টাইপের যন্ত্রকে হিসাব করার আদেশ দেওয়াই হলো প্রগ্রামিং।যারা প্রগ্রামিং করে তাদের প্রগ্রমার বলে।প্রগ্রামিং করা হয় প্রগ্রামিং ল্যাঙ্গুয়েজ বা প্রগ্রামিং ভাষার মাধ্যমে।বর্তমান সময়ে অনেক জনপ্রিয় প্রগ্রামিং ল্যাঙ্গুয়েজ রয়েছে।যেমন: সি ,সি প্লাস প্লাস, জাভা,পাইথন, রুবি, জাভাস্ক্রিপ্ট,আর, কটলিন প্রভৃতি।
Competitive programming কী
কম্পিটিটিভ শব্দের অর্থ প্রতিযগিতামূলক।তাহলে কমপিটিটিভ প্রগ্রামিং শব্দের অর্থ হলো প্রতিযোগিতা মূলক প্রগ্রামিং। কমপিউটার প্রগ্রামের মধ্যে সমস্যা সমাধান করার প্রতিযোগিতাকে কম্পিটিটিভ প্রগ্রামিং বলে।একটা সমস্যার কথা উল্লেখ থাকে।এবং ওই সমস্যার জন্য তথ্য ইনপুট নিয়ে সমাধান আউটপুট দিতে হয়।
যেমন ধরুন,
একটা প্রগ্রাম লেখতে হবে যা দুইটি সংখ্যা ইনপুট নেবে এবং তাদের যোগফল আউটপুট দিতে হবে।
এটার সমাধান কয়েকটি প্রগ্রামিং ল্যাঙ্গুয়েজ দিয়ে দেখলাম,
#include<stdio.h>
int main(){
int a,b;
scanf("%d %d",&a,&b);
printf("%d\n,a+b);
return 0;
}
#include <iostream>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
count<<a+b<<endl;
return 0;
}
import java.util.Scanner
public class Main{
public static void main(){
Scanner sc = new Scanner(System.in);
int a,b;
a = sc.nextInt();
b = sc.nextInt();
System.out.println(a+b);
}
}
a = int(input())
b = int(input())
print(a+b)
কম্পিটিটিভ প্রগ্রামিং এর জন্য সবচেয়ে বেশি ব্যবহৃত প্রগ্রামিং ল্যাঙ্গুয়েজ হলো সি প্লাস প্লাস।
কত তাড়াতাড়ি প্রগ্রাম টি লেখা হয়েছে এবং কত দ্রুত কাজ করে এবং প্রতিটা ইনপুটের সঠিক আউটপুট দেয় কিনা তার উপর নির্ভর করে ফলাফল দেওয়া হয়।
আরও পড়ুন,
Web 3.0 কী? Web 3.0 কিভাবে কাজ করে?
Competitive programming করতে কী জানা প্রয়োজন
কম্পিটিটিভ প্রগ্রামিং করতে গেলে প্রথমেই একটি প্রগ্রামিং ল্যাঙ্গুয়েজ জানতে লাগে।যেকোন প্রগ্রামিং ল্যাঙ্গুয়েজ জানলেই চলে।তবে কম্পিটিটিভ প্রগ্রামিং এর জন্য সবচেয়ে বেশি ব্যবহৃত হয় সি প্লাস প্লাস।তারপর জাভা,পাইথন আরও অনেক।
Competitive programming এর জন্য সেরা Programming language
আপনি যদি শুরু করতে চান তবে সি দিয়ে শেখ শুরু করেন।সি দিয়ে প্রগ্রামিং করার পর যখন সি ভালোভাবে শিখে যাবেন তারপর সি প্লাস প্লাস এ শিফট করেন।সি এবং সি প্লাস প্লাস আলাদা কিছু না ।সি দিয়ে লেখা সকল প্রগ্রাম সি প্লাস প্লাস এ চলবে।তার ওপর অরো অনেক ফিচার আছে সি প্লাস প্লাস এ।সবচেয়ে ভালো যে ফিচার সেটা হলো STL (Stander Tamplate Liberary)।STL এ অনেক ডেটা স্ট্রাকচার ও অ্যালগরিদম আগে থেকেই ইমপ্লিমেন্ট করা থাকে যা প্রবলেম সলভের ক্ষেত্রে খুব সাহায্য করে।
তাছাড়াও Compititive Programming এর সকল অনলাইন রিসোর্স সি প্লাস প্লাস এ লেখা।
যে কোন প্রগ্রামিং ল্যাঙ্গুয়েজ জানলেই কম্পিটিটিভ প্রগ্রামিং শুরু করা যায় তারপর প্রয়োজন মত সময়েও সাথে বিভিন্ন ডেটা স্ট্রাকচার ও অ্যালগরিদম শিখে নিতে হবে ।
কোথায় থেকে Compititive Programming শিখব
প্রগ্রামিং শেখার রিসোর্স এর বর্তমানে কোন অভাব নেই আপনি চাইলেই গুগল সার্চ দিয়ে অনেক রিসোর্স পেতে পারেন।ইংরেজিতে অনেক রিসোর্স আছে।তবে সময়ের সাথে আমাদের বাংলা ভাষায় রিসোর্স তৈরি হচ্ছে। আমি কিছু বাংলা ভাষায় রিসোর্স এর উল্লেখ করছি।
Compititive Programming সহায়ক বই
- সি প্রগ্রামিং প্রথম খন্ড –তামিম শাহরিয়ার সুবিন
- পাইথন প্রগ্রামিং প্রথম খন্ড –তামিম শাহরিয়ার সুবিন
বই কিনতে মনে না চাইলে বা টাকা না থাকলেও সমস্যা নেই।লেখন বাংলা ভাষায় প্রগ্রামিং এর প্রসার ঘটানোর জন্য বইগুলোর ফ্রি ওয়েব ভার্সন পাবলিশ করেছেন।অনলাইনে পড়তে নিচে বইয়ের নামে ক্লিক করুন।
বইটির পিডিএফ ভার্সনের জন্য লিংক
Compititive Programming সহায়ক ব্লগ
সাফায়াত ব্লগ https://www.shafaetsplanet.com/planetcoding
আমার মতে বাংলা ভাষায় ডেটা স্ট্রাকচার ও অ্যালগরিদম শেখার সেরা ব্লগ
Petr এর ব্লগ https://petr-mitrichev.blogspot.com
Bruce Merry এর ব্লগ https://blog.brucemerry.org.za
Compititive Programming সহায়ক ইউটিউব চ্যানেল
বাংলা ভাষায় কিছু ইউটিউব চ্যানেল এর নাম
- Anisul Islam
- Tamim Shahrirar Subeen
- Al Shahrirar Tonmoy
Compititive Programming সহায়ক অ্যাপ
বাংলা দেশি প্রগ্রামার ঝংকার মাহবুবের তৈরি অ্যাপ Programing Hero যা গুগল প্লে স্টোর এ পাওয়া যাবে।সেখানে সি, সি প্লাস প্লাস,জাভা ,পাইথন সহ আরও অনেক কিছু শেখা যায়কোথায় Competitive programming করতে হয়
সবইতো হলো।প্রগামিং ল্যাঙ্গুয়েজ শিখলাম।প্রগ্রাম করতে পারি এবার কী করব?
এখন থেকেই খেলা শুরু হবে।খেলা বলার কারণ হলো কম্পিটিটিভ প্রগ্রামিং এক প্রকার খেলা।যখন আপনি একটা প্রবলেম সলভ করবেন।তখন খেলায় জেতার আনন্দ পাবেন।
কোথায় Competitive programming করতে হয়
সবইতো হলো।প্রগামিং ল্যাঙ্গুয়েজ শিখলাম।প্রগ্রাম করতে পারি এবার কী করব?এখন থেকেই খেলা শুরু হবে।খেলা বলার কারণ হলো Compititive Programming এক প্রকার খেলা।যখন আপনি একটা প্রবলেম সলভ করবেন।তখন খেলায় জেতার আনন্দ পাবেন।আমাদের পরিচিত হতে হবে অনলাইন জাজ সম্পর্কে।
আরও পড়ুন,
Blockchain কী? কিভাবে কাজ করে?
Online Judge কী?
অনলাইন জাজ হলো Compititive programming প্র্যাকটিস করার ওয়েব সাইট।এখানে প্রবলেম দেয়া থাকে।আপনাকে প্রগ্রাম লিখে সলভ করতে হবে।
অনেক অনলাইন জাজ রয়েছে ।তার মধ্যে সবচেয়ে জনপ্রিয় কিছু হলো,
- কোডফোর্সেস https://codeforces.com নিয়মিত প্রগ্রামিং কনটেস্ট হয়ে থাকে।
- কোডসেফ https://codechef.com এখানে ও নিয়মিত কনটেস্ট হয়ে থাকে ।
- Uva https://uva.onlinejudge.org
আরো অনেক আছে ।বাংলাদেশি কিছু অনলাইন জাজ
- www.LightOJ.com বাংলাদেশি প্রথম অনলাইন জাজ
- https://toph.co বেশির ভাগ সমস্যা ইংরেজিতে তবে কিছু বাংলায় দেয়া রয়েছে।নিয়মিত কনটেস্ট হয়।
- https://dimikoj.com বাংলায় শুরু করার জন্য বেস্ট।বাংলায় সমস্যা দেয়া রয়েছে।
Competitive programming করে কী হয়
অনকে মনে করে Compititive Programming করে গুগল মাইক্রসফট এ চাকরি করা যায় আবার অনেকে মনে করে হ্যাকার হওয়া যায়। কম্পিটিটিভ প্রগ্রামিং করে চাকরি পাওয়া যায়।বড় বড় কোম্পানি ইন্টারভিউতে প্রবলেম সলভ করতে দেয়। কিন্তু Competitive programming করে যে আনন্দ পাওয়া যায়।সেটা যে করে সেইই বুঝতে পারে।
Conclusion
এতকিছু পড়ে কী কনফিউজ হয়ে গেছেন ,কী করবেন।কোনটা থুয়ে কোনটা দিয়ে শুরু করবেন।
তাহলে https://cpbook.subeen.com এ চলে যান। তারপর বইটা পড়া শুরু করেন।প্রতিটা অনুশীলনী নিজে নিজে করুন।না বুঝলে ইউটিউব সার্চ করুন।বইটা পড়া শেষ হলে । https://dimikoj.com এ চলে যান।আর প্রবলেম সলভ করা শুরু করেন।তারপর কী করতে হবে তা নিজেই বুঝে যাবেন।প্রগ্রামিং কঠিন কিছু না। শুরু করাই সবচেয়ে কঠিন।
সি প্রগ্রামিং কিভাবে কম্পিউটারে রান করতে হয় ত ওই বইয়ের মধ্যেই সুন্দরভাবে বলা হয়েছে।