সবাইকেই কম্পিটিটিভ প্রোগ্রামিংয়ে প্রবলেম ফেইস করতে হয়, এমন কেউ নেই যে এই প্রবলেমটা ফেইস করে না।
১. একটা প্রশ্ন সবার-ই থাকে যে কিভাবে কম্পিটিটিভ প্রোগ্রামিংয়ে ভালো করবো?
কম্পিটিটিভ প্রোগ্রামিংয়ে ভালো করার সর্বোত্তম উপায় নিয়মিত অনুশীলন করা। প্রতিদিন অন্তত ২-৩ টা সমস্যা সমাধান করার চেষ্টা করা উচিত। রেটিংস যদি "x" থাকে, তাহলে {x+100 to x+300} রেটিংসের প্রবলেমগুলো সলভ করা উচিত। রেগুলার কনটেস্ট গুলোতে অংশ নেয়া উচিত কিন্তু যদি রেটিংস বাজে আসে অথবা নেগেটিভ হয়ে যায় তাহলেও কন্টিনিউ করতে হবে এবং যে প্রবলেমগুলো একটুর জন্য সলভ হয় নি, সেগুলো আবারো ট্রাই করতে হবে। সলভ করতে গিয়ে ঘন্টার পর ঘন্টা অথবা দিনের পর দিন আটকে থাকলেও হতাশ হওয়ার কিছু নেই, এটা সবার ক্ষেত্রেই হয়। (আমি নিজেও একবার একটা Hard Problem ১ মাস সময় নিয়ে সলভ করেছিলাম)
২. এমন অনেকেই আছে যারা প্রবলেমটাই বুঝতে পারে না, এখন প্রবলেম বুঝতে না পারলে কি করতে হবে ?
প্রবলেমগুলো যেহেতু ইংলিশে থাকে তাই না বুঝতে পারার এটাও একটা কারণ হতে পারে। এজন্য প্রথম প্রথম প্রতিদিনই কিছু প্রবলেম পড়ার অভ্যাস করলে বেটার। পেইন খেলেও একটু ধৈর্য্য নিয়ে এই কাজগুলো করতে হবে।
৩. এবার আর একটি প্রশ্ন প্রায় অনেকেরই থাকে যে কোন প্রোগ্রামিং ল্যাংগুয়েজ দিয়ে কম্পিটিটিভ প্রোগ্রামিং করা উচিত ?
অবশ্যই C++ কারণ এটা গতি এবং দক্ষতার জন্য বেস্ট। প্রতিযোগিতামূলক প্রোগ্রামিংয়ে সময় এবং মেমোরির সীমাবদ্ধতা ভীষণ গুরুত্বপূর্ণ সেখানে C++ ব্যবহার বুদ্ধিমানের কাজ। বিশেষকরে C++ এর STL প্রোগ্রামারদের দ্রুত এবং আরও দক্ষতার সাথে কোড লিখতে সাহায্য করে।
অনেকেই পাইথন প্রেফার করে, আমি নিজেও করি কিন্তু পাইথনের ধীরগতি অনেক সময়ই কন্টেস্টের জন্য বেশ অসুবিধাজনক হয়ে দাঁড়ায়।
৪. এবার আসি কোথায় প্র্যাকটিস এবং কনটেস্ট করবো ? Beecrowd, HackerRank, Codeforces, Codechef, AtCoder, LeetCode -> বিগিনার টু এডভান্সড, কে কোন অনলাইন জাজ ব্যবহার করে প্রবলেম সলভ এবং কনটেস্ট করবেন ?
বিগিনার টু এডভান্সড, সিরিয়ালি বলা হলোঃ
৪.১. Beecrowd (Former name URI): যারা একেবারেই প্রবলেম সলভিং পারেন না অথবা প্রবলেমটাই বুঝতে পারেন না, প্রবলেম বুঝতে পেইন লাগে তাহলে এটা তাদের জন্য।
৪.২. HackerRank: প্র্যাকটিসের জন্য এটা বেস্ট বেস্ট বেস্ট! যারা মোটামুটি একটু ভালো প্রবলেম সলভিং পারেন অথবা প্রবলেম বুঝতে অসুবিধা হয় না তাহলে এটা তাদের জন্য।
৪.৩. Codeforces, Codechef, AtCoder: কনটেস্ট এর জন্য এই তিনটি ওয়েবসাইট বেস্ট। প্রবলেম সলভিং প্র্যাকটিস করে তারপর কনটেস্ট শুরু করে দেয়া উচিত এবং কনটেস্টে রেটিংস যতোই বাজে আসুক, তবুও কনটেস্টগুলো কন্টিনিউ করা উচিত।
৪.৪. LeetCode: কি নেই এর মধ্যে ? প্র্যাকটিস, কনটেস্ট, ইন্টারভিউ প্রিপারেশন সব একসাথে করতে পারবেন।
৫. কম্পিটিটিভ প্রোগ্রামিং কেন গুরুত্বপূর্ণ ?
এটা সমস্যা সমাধানের দক্ষতা, যৌক্তিক যুক্তি এবং বাক্সের বাইরে চিন্তাভাবনা বৃদ্ধি করতে সহায়তা করে। জবের ক্ষেত্রেও কোডিং ইন্টারভিউয়ের জন্য বেশ বড় একটা অবদান রাখে। সাথে আত্মবিশ্বাস বাড়ায় কারণ চ্যালেঞ্জিং সমস্যাগুলো সফলভাবে সমাধানের মাধ্যমে আত্মবিশ্বাস অনেকটাই গ্রো করে।
৬. যারা ডিবাগিং করতেও হিমশিম খায়, তাদের কি করা উচিত ?
বেশি প্র্যাকটিস না করার ফলে অনেক অভিজ্ঞ প্রোগ্রামাররাও ডিবাগিংয়ে দুর্বল থাকে।
টিপস: আমি কোডের মধ্যে ভুল সিলেক্ট করার সময় কোড উপর থেকে নিচে, এভাবে না পড়ে উল্টোভাবে পড়ে ডিবাগিং করি।(সবার ক্ষেত্রে প্রযোজ্য নাও হতে পারে)
মাহবুবা মিম
সহসম্পাদক, লিপির আলো
এক্সপার্ট, কম্পিটিটিভ প্রোগ্রামিং
একটি মন্তব্য পোস্ট করুন
0মন্তব্যসমূহ