Facebook massage

Friday, December 30, 2016

কম্পিটিটিভ প্রোগ্রামিং সম্পর্কে কিছু কথা

কম্পিটিটিভ প্রোগ্রামিং সম্পর্কে কিছু কথা
কম্পিটিটিভ প্রোগ্রামিং হল এমন ধরনের একটা প্রোগ্রামিং প্রতিযোগিতা যেখানে বিভিন্ন প্রোগ্রামাররা কিছু নির্ধারিত সমস্যা প্রোগ্রাম করে সমাধান করে থাকে।গড়ে ৫ ঘন্টা সময়ের মধ্যে ৬ টা থেকে ১০ টা সমস্যা সমাধান করতে দেওয়া হয়ে থাকে এ ধরনের প্রতিযোগিতায়।তবে,সাধারনত প্রতিযোগিতা হয় টিম নির্ভর।একটি টিমে ১ থেকে ৩ জন সদস্য থাকতে পারে।বিভিন্ন প্রতিষ্ঠান এ ধরনের প্রতিযোগিতার আয়োজন করে থাকে।সেটা একটা দেশের মধ্যে অথবা সারা বিশ্বের অনেক শিক্ষাপ্রতিষ্ঠান এর মধ্যে হতে পারে।কিছু প্রোগ্রামিং প্রতিযোগিতার মধ্যে ACM ICPC উল্লেখযোগ্য।গুগলে খুজলে আরো বিস্তারিত জানতে পারবেন।এই প্রতিযোগিতা অনেকটা আন্তর্জাতিক গনিত অলিম্পিয়াড এর মতোই।এছাড়াও অনেক বিশ্ববিদ্যালয় এ ধরনের প্রতিযোগিতা আয়োজন করে থাকে।যাই হোক, বাকিসব গুগল ঘেটে জেনে নিবেন।
কথা হল,কম্পিটিটিভ প্রোগ্রামিং করে লাভ কি হয় অথবা কি ধরনের প্রশ্ন থাকে, এরকম অনেক প্রশ্ন মাথায় আসা স্বাভাবিক।সো,আমি কিছু বিষয় আলোচনা করব এবং এর বাইরেও কিছু জানার থাকলে গুগল তো আছেই।প্রথমে আসি প্রব্লেম কি দেওয়া থাকে?নিচে একটা সমস্যা লক্ষ্য করুন।

Number of Digits

Shakil always loves to fun with children. One day shakil asks his 5 years old cousin Nishi, to solve a problem. Shakil says “I will Give you an integer (0 – 1000). Now tells me, how many digits contain that integer? “ . Nishi is totally stuck in this problem. Can you help Nishi to make a smile on her little face?

Input:

First line of the input will consist of an integer which represent the test case T (0 < T <= 1001). Each test case contains an integer X (0 <= X <= 1000).

Output:

For every test case, print number of digits of X.

Sample Input

2
1
30

Sample Output

1
2
এই সমস্যাটি আমি এখান থেকে নিয়েছি।আমাকে এমনভাবে কোড করতে হবে যেন আমার কোড Standard Input নিয়ে Standard Output print করে।এখন,কোন ল্যাংগুয়েজ দিয়ে সমাধান করা লাগবে?ICPC Standard এ শুধুমাত্র C,C++,Java দিয়ে সমাধান করতে পারবেন।এছাড়াও কিছু অনুশীলন ওয়েবসাইট আছে যাকে বলা হয় “অনলাইন জাজ” যেখানে এ ধরনের সমস্যা দেওয়া থাকে এবং আপনার সমাধান সাবমিট করার পর স্বয়ংক্রিয়ভাবে তা কিছু নির্ধারিত ইনপুটের সাথে আউটপুট মিলিয়ে দেখা হয় এবং যদি মিলে যায়,তবে ফলাফল “Accepted” আসবে।সেসব সাইটে অবশ্য আপনি C,C++,Java,C#,Python সহ অনেক ভাষায় সমাধান সাবমিট করতে পারবেন।উপরের প্রশ্ন পড়ে দেখুন।সমস্যার সুচনাতে একটা প্রেক্ষাপট দেওয়া থাকে এবং কি করতে হবে বলা হয়।অনেককিছু input and output এ ও দেওয়া থাকে অনেকসময়।সেভাবে প্রোগ্রাম তৈরি করতে হয়।কাজেই,প্রোগ্রামিং এ মোটামুটি দক্ষ হলেই কম্পিটিটিভ প্রোগ্রামিং করা যাবে।তবে গণিতে দক্ষ হতেই হবে!প্রোগ্রামিং চলে এলগরিদমের উপর।কাজেই এলগরিদমের অনেক জায়গায় গনিত লাগবেই।আপনাকে ইনপুট নিতে হবে(ধরুন সি তে scanf দিয়ে) এবং সাধারন প্রিন্ট করতে হবে।sample input output দেওয়া হয় আপনার কোড সঠিক সমাধান করছে কিনা চেক করার জন্য।তবে,সাবমিট করার পর যে সব টেস্ট কেস মেলানো হবে,তা গোপন থাকে।কাজেই আপনি চালাকি করতে পারবেন না।কারো কোড কপি পেষ্ট করা নাজায়েজ!নিজে যতোটা পারেন,তা দিয়ে সমাধান করতে হবে।প্রয়োজনে টিমে আলোচনা করতে পারবেন।নিজে চর্চা করতে অনেক সাইট আছে।কয়েকটিঃ
এই সাইটগুলোতে একাউন্ট খুলে প্রব্লেম সমাধান চর্চা করতে পারেন।এবার, লাভ কি?সমস্যা সমাধান করতে গিয়ে আপনাকে অনেক এলগরিদম শিখতে হবে, যা পরে আপনার প্রোগ্রামিং স্কিল বাড়িয়ে দেবে।চাকরির ক্ষেত্রে এটি উল্লেখ করতে পারবেন।এখানে সকল দেশের প্রোগ্রামার কম্পিটিশন করে থাকে,কাজেই আপনার দক্ষতা কেমন তা এখান থেকে অনুমান করা যাবে।অনেকেরই কম্পিটিটিভ প্রোগ্রামিং এ আগ্রহ নাই,থাকে না অথবা চলে যায়।তাদের জোর করে এসব করার প্রয়োজন নেই।
কিছু ফলাফল পাবেন সমাধান ওয়েবসাইটে সাবমিট করার পর যাকে বলে “verdict”
Accepted: আপনার সমাধান সঠিক।
Wrong Answer: আপনার উত্তর সঠিক নয়।আপনাকে আবার চেষ্টা করতে হবে।
Presentation Error: প্রিন্ট করার সঠিক সিনট্যাক্স ফলো না করলে আসবে।চেক করবেন আপনি অতিরিক্ত স্পেস অথবা লাইন প্রিন্ট করে ফেলছেন কিনা।
Time Limit Exceeded: প্রতি সমস্যার সমাধান প্রিন্ট করতে আপনার কোড ন্যুনতম সময় ব্যয় করবে।এর বেশি করলে তা গ্রহনযোগ্য হবে না।
Compilation Error: আপনার কোডে কোথাও সিনট্যাক্স ভুল করেছেন অথবা আপনি বেশি রিসোর্স ব্যবহার করেছেন যা কোড রান করতে বাধা দিচ্ছে।
এই ছিল কম্পিটিটিভ প্রোগ্রামিং নিয়ে কিছু কথা।
উপরের কোড সমাধান করার হিন্টসঃ
আপনাকে ইনপুটে কতটি সংখ্যা নেয়া হল,তা সাথে সাথে প্রিন্ট করতে হবে।প্রথমে একটি লুপ চালাতে হবে।প্রথম ইনপুট যা হবে, লুপ ততবার চলবে।
সময় নিয়ে পড়েছেন, সে জন্য ধন্যবাদ।ভাল লাগলে শেয়ার করতে ভুলবেন না :)

No comments:

Post a Comment