বিগিনারদের জন্য কম্পিটিটিভ প্রোগ্রামিং গাইডলাইন এবং প্রয়োজনীয় রিসোর্সসমূহ

আমরা সবাই জানি কম্পিউটার একটি সহজ সরল বোকা যন্ত্র, যাকে কাজে লাগিয়ে আমরা জটিল সমস্যার সমাধান করে ফেলতে পারি। আর কম্পিউটারের সাথে আমাদের মনের ভাব প্রকাশের জন্য দরকার হয় প্রোগ্রামিং ভাষার। দৈনন্দিন জীবনে আমরা যেসব সফটওয়ার ব্যাবহার করি সেগুলোও মূলত হাজার থেকে মিলিয়ন লাইনের কোড। আমরা প্রোগ্রামিং শিখবো কারন প্রোগ্রামিং শেখার মাধ্যমেই আমরা কম্পিউটারকে দিয়ে অনেক অনেক কাজ করিয়ে নিতে পারবো। যেমন কোড লিখে কম্পিউটারকে দিয়ে এক জায়গার তথ্য অন্য জায়গায় পাঠানোর প্রোগ্রাম করতে পারবো, গান শুনতে পারবো, গেম খেলার প্রোগ্রাম তৈরী করে ফেলতে পারবো, কিংবা এমন কাজও করিয়ে নিতে পারবো যা করার কথা আগে কেউ ভাবেনি। মোটকথা প্রোগ্রামিং করে যা যা করতে পারবো তার কোনো সীমা নেই। কেনো কম্পিটিটিভ প্রোগ্রামিং করবো? আমরা লক্ষ্য করলে দেখবো বোকা যন্ত্র গুলোও ক্রমশ উন্নত হচ্ছে, সফটওয়ারের আপডেট আসছে, সুবিধাগুলো বাড়ছে । যত দিন যাচ্ছে এসব ডিভাইস গুলোর বুদ্ধিমত্তাভিত্তিক কর্মক্ষমতাও তত বৃদ্ধি পাচ্ছে। কিন্তু আমরা কি বলতে পারি মেশিনগুলো বুদ্ধিমান হচ্ছে?-মোটেই না। ক্রমাগত অনুশীলন করে মানুষ প্রোগ্রামিং এ তাদের মস্তিষ্ক শাণিত করছে এবং বোকা যন্ত্রগুলোকে আরো বেশি কাজে লাগানোর সবচেয়ে সুবিধাজনক উপায় বের করার চেষ্টা করে যাচ্ছে। এই অনুশীলনের জন্য সবচেয়ে কার্যকরী উপায় হচ্ছে কম্পিটিটিভ প্রোগ্রামিং। কারন প্রতিযোগিতার মাধ্যমেই  প্রোগ্রামিংএর কিছু কঠিন বিষয়কে দৃঢ়ভাবে বুঝতে পারা যায় এবং নিজের দক্ষতা বাড়ানো যায়।  এছাড়া কম্পিটিভ  প্রোগ্রামিং এ ভালো করলে জব সেক্টরেও ভালো কদর পাওয়া যায়। বর্তমানকালের বড় বড় টেক কম্পানিগুলো প্রোগ্রামিং প্রতিযোগিতার মাধ্যমে লোক নিয়োগ করে থাকে। এছাড়াও প্রোগ্রামিং সমস্যা সমাধানের মাধ্যমে আমাদের বাস্তব জীবনের সমস্যা সমাধানের ক্ষমতাও বৃদ্ধি পায়। আর এমন কোনো বাধাধরা নিয়ম নেই কেবল যে কম্পিউটার বিজ্ঞানের শিক্ষার্থীরাই প্রোগ্রামিং করতে পারবে, যেকোনো ব্যাকগ্রাউন্ড থেকেই ভালো কিছু করা সম্ভব এবং এর নজির অনেক আছে। “Everyone should know how to program a computer because it…

Continue Readingবিগিনারদের জন্য কম্পিটিটিভ প্রোগ্রামিং গাইডলাইন এবং প্রয়োজনীয় রিসোর্সসমূহ

অনলাইন জাজ-এর দেয়া রায় ও তার ব্যাখ্যা

কম্পিটিটিভ প্রোগ্রামিং করতে এসে আমাদের সবাইকেই প্রথমে অনলাইন জাজের সাথে পরিচিত হতে হয়। অনলাইন জাজের কাজ কী? অনলাইন জাজ হচ্ছে “প্রোগ্রাম বিচার করার একটা প্রোগ্রাম”।  আরেকটু পরিস্কার ভাবে বলা যায় প্রোগ্রামিং প্রতিযোগিতায় সমস্যা সমাধানের পর সোর্স কোডটিকে স্বয়ংক্রিয়ভাবে যে প্রোগ্রামটির মাধ্যমে মূল্যায়ন করা হয় তা-ই অনলাইন জাজ(Online Judge) বা OJ। এই প্রোগ্রামগুলো প্রবলেম সেটাররা সেট করে থাকেন। তারা প্রবলেম তৈরী করেন এবং একই প্রবলেম এর জন্য ইনপুট-আউটপুটের সেট তৈরী করেন। সমধানকারী তাদের সোর্সকোড সাবমিট করার পর অনলাইন জাজ ঐ সমাধানের কার্যকরীতা মূল্যায়ন করে একটি ফলাফল বা রায় বা Verdict প্রদর্শন করে। যেহেতু কম্পিউটার একটি সহজ সরল নিরপরাধ যন্ত্র, তাই নিজেকেই দায়িত্ব নিয়ে Verdict দেখে এবং বুঝে প্রোগ্রামের ভুল বের করতে হবে। অনলাইন জাজ-এ সমস্যা সমাধান করতে এসে নতুনদেরকে এই Verdict নিয়ে চিন্তায় পড়তে হয়। তাই এখানে সবচেয়ে বেশি প্রচলিত কয়েকটি Verdict নিয়ে আলোচনা করলাম। Runtime Error বা RE: আউটপুট জেনারেট করতে অনেক সময় প্রোগ্রাম ক্রাশ করে বা বন্ধ হয়ে যায় , তখন এই ফলাফল পাওয়া যায়। বিভিন্ন ভাবে এই ধরনের সমস্যা হতে পারে। ১। অ্যারেতে অনাকাঙ্ক্ষিত ইনডেক্স এর ব্যবহার করলে , ২। ভূলবশত শূন্য দিয়ে কোনো সংখ্যাকে ভাগ করলে, ৩। মেমোরী এলোকেশন এ ভুল করলে কিংবা নাল পয়েন্টার ব্যবহার করলে এই ধরনের সমস্যা দেখা দিতে পারে। তাই অনলাইন জাজ গুলো থেকে এই আউটপুট পেলে এই বিষয়গুলো খতিয়ে দেখতে হবে। Time Limit Exceeded বা TLE: সাধারণত প্রত্যেকটি প্রবলেম এর জন্য একটি নির্দিষ্ট সময় বরাদ্দ থাকে। প্রতিযোগীর দেওয়া প্রোগ্রামটি যদি ঐ নির্দিষ্ট সময়ে Execute করতে ব্যর্থ হয় তাহলে অনলাইন জাজ এই সিদ্ধান্ত প্রদান করে। তাই এই ধরনের সমস্যা সমাধানের জন্য Time Complexity নিয়ে সচেতন হতে হবে। প্রয়োজন অনুযায়ী অ্যালগোরিদম পরিবর্তন করতে হবে প্রোগ্রামটিকে আরো efficent করার জন্য। Memory Limit Exceeded বা MLE: Time…

Continue Readingঅনলাইন জাজ-এর দেয়া রায় ও তার ব্যাখ্যা