প্রব্লেম সল্ভ কী ?? ওজে কী?? কেন করব ?? কোথায় করব ?? কিভাবে করব ??

প্রব্লেম সল্ভ কী ?? ওজে কী?? কেন করব ?? কোথায় করব ?? কিভাবে করব ??

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

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

আজকে সেরকম একটা প্র্যাক্টিস মেথড নিয়েই কথা বলব যেটা নতুন প্রোগ্রামারদের প্র্যাক্টিস করতে সাহায্য করবে। এখনই বিস্তারিত জানতে পড়ে ফেলুন এই লেখাটি।


প্রব্লেম কী ??

প্রব্লেম এর আবিধানিক অর্থ হচ্ছে সমস্যা। আর প্রব্লেম সল্ভ হচ্ছে সমস্যা সমাধান। প্রোগ্রামিং এর জগতে কোনো একটা প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে সমস্যা সমাধানের নামই হচ্ছে প্রব্লেম সল্ভিং।

চলুন আরো ক্লিয়ার হতে একটা উদাহরণ দেখে নেই।



এটি হচ্ছে dimikoj.com এর একটা প্রব্লেম। সাধারণত একটি প্রব্লেম এর বেশ কিছু অংশ থাকে। যেমন

  1. প্রব্লেম এর শিরোনাম বা টাইটেল।
  2. প্রব্লেম এর বর্ণনা
  3. প্রব্লেম এর ইনপুট এর বর্ণনা
  4. প্রব্লেম এর আউটপুট এর বর্ণনা
  5. ইনপুট এর উদাহরণ
  6. আউটপুট এর উদাহরণ

টাইটেল

টাইটেল বা শিরোনাম হচ্ছে প্রব্লেম এর নাম। যেমন উদাহরণে প্রব্লেম এর নাম হচ্ছে স্বরবর্ণ গণনা।

প্রব্লেম এর বর্ণনা

একটা প্রব্লেম এর মুল কথা গুলো থাকবে এই বর্ননায়। কেমন প্রোগ্রাম লিখতে হবে সেটাও এই অংশে বলা থাকে।

ইনপুট এর বর্ণনা

সাধারণত আমরা কোনো প্রোগ্রামে একটা ইনপুট দেই এবং সেই অনুসারে একটা আউটপুট দেখায়।উক্ত সমস্যা সমাধানে যেরকম ইনপুট প্রয়োজন সেটার বর্ণনা থাকবে এই অংশে।

আউটপুট এর বর্ণনা

উক্ত ইনপুটের জন্যে যেরকম আউটপুট দেখানোর কথা সেটার বর্ণনা থাকবে এই অংশে।
এটা গেলো প্রব্লেম এর মুল অংশ।
এবারে আপনাকে উক্ত প্রব্লেমের সাথে একটা বা দুইটা প্রব্লেম এর উদাহরণ থাকবে। এবং সেই

উদাহরণের দুইটা অংশ থাকবে।
১। ইনপুট
২। আউটপুট
উক্ত ইনপুট এর জন্য আউটপুট কেমন হবে সেটাই উদাহরণ এ দেয়া থাকে।

এখন একটা নতুন শব্দ শিখবো



অনলাইন জাজ বা ওজে

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

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

বর্ণনা

বলা আছে এমন একটা প্রোগ্রাম লিখতে হবে যেটা কোনো বাক্যে কতগুলো vowel আছে সেটা বলে দিবে। অর্থাৎ, একটা প্রোগ্রাম লিখতে হবে যেখানে একটা বাক্য প্রোগ্রাম ইনপুট নিয়ে সেই বাক্যের vowel সংখ্যা আউটপুট দিবে।

ওকে, এখন আমরা প্রোগ্রাম টা আগে লিখে ফেলি। আমি পাইথন দিয়ে লিখছি আপনারা চাইলে অন্য প্রোগ্রামিং ভাষা দিয়েও করতে পারেন।
sentence = input().lower()
vowel = "aeiou"
count = 0
for i in sentence:
    if i in vowel:
        count += 1
print(count)

লাইন - ১

একটা বাক্য ইনপুট নিয়েছি এবং সেটাকে ছোট হাতের অক্ষরে রূপান্তর করেছি।

লাইন-২

একটা ভ্যারিয়েবল vowel নিয়ে সেটার মধ্যে aeiou রেখেছি অর্থাৎ vowel রেখেছি, তবে আমরা যেহেতু প্রথম লাইনে বাক্যটাকে ছোত হাতের করে নিয়েছি তাই vowel ভ্যারিয়েবলে শুধু aeiou রাখলেই চলবে।
তবে আমরা যদি বাক্যটাকে ছোট হাতের না করতাম তাহলে vowel ভ্যারিয়েবলে aeiouAEIOU রাখতে হতো। কারন, ছোট হাতের বা বড় হাতের যেকোন অক্ষর ই হতে পারে।

লাইন-৩

count নামের ভ্যারিয়েবলে 0 রেখেছি।

লাইন- ৪ হতে ৬

এখন একটা for লুপ চালিয়ে বাক্যটার প্রত্যেক অক্ষর নিয়েছি। এবং উক্ত অক্ষর যদি vowel ভ্যারিয়েবলে থাকে তাহলে তো সেটা vowel হবে এবং ওই count ভ্যারিয়েবলে ১ যোগ হবে। অন্যথায় কিছুই হবে না।

লাইন-৭

count ভ্যারিয়েবল হচ্ছে vowel এর সংখ্যা এবং সেটাই প্রিন্ট করলাম।
খুব সাধারণ সমস্যার ছোট্ট সমাধান।
যদিও প্রোগ্রামটি সঠিক তবে আমরা যদি অনলাইন জাজে ঐটা সাবমিট করি ইরোর খাবো। কারন, প্রব্লেমে যেভাবে চেয়েছে সেভাবে হয় নি।


ইনপুট বর্ণনায় বলেছে,

প্রথমে একটা সংখ্যা ইনপুট নেবে এবং সেটার মান যা হবে তত গুলো লাইনে প্রোগ্রামটি একটা করে বাক্য ইনপুট নেবে। এবং সেই বাক্যে শুধু ছোট হাতের অক্ষর থাকবে। তাই আমাদের ছোট হাতের অক্ষরে কনভার্ট করা লাগবে না। এখন প্রোগ্রাম এর কিছুটা লিখে ফেলি
T = int(input())
for i in range(T):
    sentence = input()
এটা হচ্ছে ইনপুট সেকশনের প্রোগ্রাম। এখন আউটপুট এ কি আছে দেখি।

আউটপুট এর বর্ণনায় বলছে,

আউটপুট এর বর্ণনায় তেমন কিছু নেই তাই আউটপুট এর উদাহরণ দেখে বুঝতে পারি যে, লিখতে হবে Number of vowels এবং তারপর একটা স্পেস দিয়ে = চিহ্ন এবং তারপর আবার স্পেস দিয়ে vowel এর সংখ্যা।
প্রোগ্রামটা তাহলে সম্পন্ন করি।



T = int(input())
for i in range(T):
    sentence = input()
    count = 0
    for letter in sentence:
        if letter in "aeiou":
            count += 1
    print(count)
এখন প্রোগ্রামটা রান করলে দেখতে পাবো উদাহরণের মতো হয়েছে। এবং আমরা vowel ভ্যারিয়েবল টা না লিখে এক লাইনে if letter in "aeiou" লিখে করেছি।
এখন প্রোগ্রামটা সাবমিট করলেই হয়ে যাবে।


সাবমিট কিভাবে করব??

ধাপ-১ঃ প্রব্লেম এর নিচে দেখবেন সাবমিট বাটন আছে। ( লগিন করা থাকতে হবে )
ধাপ-২ঃ ওই বাটনে ক্লিক করলে একটা পেজে নিয়ে যাবে সেখানে আপনার কোডটা কপি করে পেস্ট করুন।
ধাপ-৩ঃ তার নিচে দেখুন ভাষা সিলেক্ট করতে বলবে। আপনি আপনার প্রোগ্রামিং ভাষা সিলেক্ট করে দিন।
ধাপ-৪ঃ সাবমিট বাটনে ক্লিক করলেই হয়ে যাবে।
ধাপ-৫ঃ এখন কোড যদি ঠিক থাকে তাহলে Accepted লেখা দেখাবে অন্যথায় যে ভুল হয়েছে সেটা দেখিয়ে দেবে।
সব অনলাইন জাজেই প্রায় একই সিস্টেম।

* কখনো কোনো প্রব্লেম না পারলে আগেই সাহায্য চাইবেন না। কমপক্ষে ২/৩ দিন চেষ্টা করবেন তারপর কারোর থেকে সাহায্য চাইবেন *
এখন দেখি

প্রব্লেম সল্ভ কেন করব??

বর্তমান সময়ে প্রোগ্রামার যারা শিখছে তাদের মধ্যে কয়েকটা গ্রুপ আছে যেমন
  1. প্রব্লেম সল্ভিং ছাড়া অন্য কিছু শিখতে চাই না। আবার প্রব্লেম সল্ভিং ও ভালো পারে না।
  2. প্রব্লেম সল্ভিং দুই চোখে দেখতে পারে না আবার অন্য কিছুও পারে না।
  3. প্রব্লেম সল্ভ করে নিয়মিত, নতুন নতুন প্রযুক্তি সম্বন্ধে ধারনা রাখে, নতুন কিছু শিখতে আগ্রহী আবার এসব নিয়ে বিতর্কেও যায় না।
এখন আপনি হয়তো বুঝতে পারছেন আপনাকে কোন গ্রুপ এ যাওয়া উচিৎ। অবশ্যই তিন নাম্বার গ্রুপ।

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

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

আমি অনেক অভিজ্ঞ প্রোগ্রামার দের কাছ থেকে যেই পরামর্শ পেয়েছি তা হল
  1. কোন একটা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজ খুব ভালো ভাবে জানো।
  2. অনেক গুলো ল্যাঙ্গুয়েজ জানার প্রয়োজন নেই, একটা ল্যাঙ্গুয়েজ গভীর ভাবে জানো।
  3. ব্যাসিক কিছু প্রব্লেম সল্ভ করতে থাকো।
  4. ডেটা স্ট্রাকচার ও এলগরিদম শিখতে থাকো।
  5. যেই ডেটা স্ট্রাকচার এবং এলগরিদম শিখছো সেই ক্যাটেগরির প্রব্লেম সল্ভ করো।
  6. ১০০/২০০ প্রব্লেম সল্ভ করে নিজেকে যাচাই করে কন্টেস্ট শুরু করো। আগে থেকে করলেও ভালো তবে এখন শুরু করলেও হবে।
  7. যখন তোমার প্রব্লেম সল্ভ করতে গেলে বোর লাগবে তখন এক্টা/দুইটা মিনি সাইজের প্রজেক্ট করো এবং তারপর আবার প্রব্লেম সল্ভ শুরু।
  8. যদি ইউনিভার্সিটির হয়ে থাকো তাহলে শেষ দুই সেমিস্টারে দুইটা/তিনটা মেগা সাইজের প্রজেক্ট করো।
কন্টেস্টে প্রথম হতে হবে এমন না তবে মোটামুটি সব প্রব্লেম গুলো সল্ভ করতে পারতে হবে।
এখন প্রব্লেম সল্ভ করলে যে যে উপকার হয় তা হল
  1. ক্রিটিকাল থিংকিং দক্ষতা বৃদ্ধি পায়।
  2. কোনো সমস্যাকে নানা দিক দিয়ে দেখার অভিজ্ঞতা হয় যা বাস্তব জীবনেও কাজে লাগে।
  3. ল্যাঙ্গুয়েজ এর সাথে সাথে লজিক ও ক্লিয়ার হয়।
আর যদি কন্টেস্ট করতে পারেন তবে,
  1. চাপ এর ভেতর নিজেকে ঠাণ্ডা রাখার কৌশল শেখা যায়।
  2. সবার সঙ্গে নিজের অবস্থান বিচার করা যায়।
আমার মনে হয় না আর কিছু বলা লাগবে, তবুও যদি আপনার মনে হয় আপনি প্রব্লেম সল্ভ করে ভালো প্র্যাক্টিস করতে পারছেন না তাহলে অন্য মেথডে এগিয়ে যান।

কোথায় করব প্রব্লেম সল্ভ ??

গুগলে শুধু লিখুন "Python Online Judge" অথবা আপনি যেই ল্যাঙ্গুয়েজ দিয়ে খুজছেন সেটা লিখে সার্চ করুন।

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

লেখাটি ভালো লাগলে বন্ধুদের সাথে শেয়ার করে ফেলুন।।

** আপনি কোন মেথডে সল্ভ করেন ?? জানিয়ে দিন কমেন্ট বক্সে।

Post a Comment

0 Comments