রবিবার, ১৩ নভেম্বর, ২০১৬

হ্যান্সি ক্রোনিয়ে কে নিয়ে মুভি ডাউনলোড, Hansie

হ্যান্সি ক্রোনিয়ে কে নিয়ে বানানো মুভির টরেন্ট ম্যাগনেট ডাউনলোড লিংক এখানে...
অথবা গুগল ড্রাইভ লিংকঃ এখানে..
টরেন্ট ম্যাগনেট থেকে কিভাবে ডাউনলোড করতে হয় তা জানতে how to download from magnet link লিখে গুগল সার্চ করুন। :)

বৃহস্পতিবার, ১০ নভেম্বর, ২০১৬

কোডফোর্সেসে ফ্রেন্ডশীপ !!!

কোডফোর্সেস ( CodeForces.com ) এ আপনি আরেকজন কন্টেস্ট্যান্ট কে ফ্রেন্ড বানাতে পারবেন। তবে এই ফ্রেন্ড আবার ফেসবুকের ফ্রেন্ডের মতো না, অর্থাৎ আপনি কাউকে ফ্রেন্ড বানালে তার ফ্রেন্ডলিস্টেও যে আপনি ঢুকে যাবেন তেমন টা না। ফ্রেন্ড বানালে কি সুবিধা ? আপনি Standings এ গিয়ে আপনার ফ্রেন্ডদের মধ্যে আপনার অবস্থা কেমন তা জানতে পারবেন। তাদের রেটিং কেমন চেঞ্জ হলো জানতে পারবেন। আর সবার কোড তো দেখাই যায়। * ফ্রেন্ড বানানোর প্রসেসঃ ১। প্রথমে তার প্রোফাইলে যান। ২। তার নামের নিচে বা ডান পাশে দেখেন একটা Star ( তারকা ) আইকন আছে। যদি অলরেডি সে আপনার ফ্রেন্ডলিস্টে থাকে তবে এই Star এর কালার হবে হলুদ। আর না থাকলে ধুসর থাকবে। ৩। যদি ধুসর কালারের হয়ে থাকে, মানে অলরেডি যদি আপনার ফ্রেন্ডলিস্টে না থাকে তবে সেই Star আইকনের উপরে ক্লিক করেন। কালার টা হলুদ হয়ে গেলে বুঝবেন ফেন্ডলিস্টে ঢুকে গেছে সে :P :D Yeah ;) এখন আপনি কোনো কোডফোর্সেস কনটেস্টের Standings এর ভিতরে ঢুকে উপরে বিভিন্ন বাটন দেখতে পারবেন যেমন Friends Standings, Friends rating changes etc. আশা করি বুঝতেই পারছেন এগুলোতে ক্লিক করলে কি হবে। বিশ্বসেরা কনটেস্ট প্রোগ্রামারের কোডফোর্সেস প্রোফাইলঃ tourist আমারঃ ahsanromeo আমার এই লেখাটি প্রকাশিত হয়েছিলো এখানে...

সোমবার, ১৮ জুলাই, ২০১৬

রিসোর্স কালেকশন - একটি নেশা

রিসোর্স কালেক্ট করা, ভিডিও টিউটোরিয়াল ডাউনলোড করা, অগ্রজদের পরামর্শ/উপদেশ চাওয়া, এসবই কিন্তু একটা নেশা হয়ে যেতে পারে। লম্বা লম্বা টিউটোরিয়াল ডাউনলোডে রেখে ডাউনলোড পার্সেন্টেজের দিকে তাকিয়ে থাকা আর ফিল করা "আহ !! আমার নেট কানেকশন টা বেশ", অথবা অগ্রজ দের কাছে পরামর্শ/উপদেশ চাওয়ার পরে তারা যখন আন্তরিক ভাবে রেসপন্স করে, তখন "আহ!! ভাই আমারে কত্তো আপন ভাবছে, ভাইয়ের ছোট ভাই হতে পেরেছি, এইটাই অনেক বড় কথা", এসব খুবই ডেঞ্জারাস। টিউটোরিয়াল/রিসোর্স কালেকশনের নেশায় পড়ে গেলে গিগাবাইট থেকে টেরাবাইট ভরে ফুলে ঢোল হয়ে যাবে, কিন্তু আপনার দেড় কেজি ভরের ঘিলুর মেমোরি গুলো ধুলিকণায় হাহাকার করে মরবে।
শত শত ভাইয়ার কাছে আজীবন উপদেশ চেয়ে গেলে, শতজনের শতরকম আইডিয়ায় মাথা লোড হয়ে খালি ভন ভন করেই ঘুরবে।
টপকোডার ভালো নাকি কোডফোর্সেস ভালো, uva ভালো নাকি uri ভালো, এসব তুলনা করতে করতে সবার ৫০০/১০০০ করে সলভ হয়ে যাবে, আপনি তখনও জাজমেন্টাল মাইন্ডে পঁচে মরবেন।
C ভালো নাকি পাইথন ভালো, C++ ভালো নাকি জাভা ভালো, এসব ডিসকাস করতে করতে ফেসবুকে কুটি কুটি "লিক কমান্ড" এ ভরে যাবে, কোন নৌকায় উঠবো ভাবতে ভাবতে শেষে কোনো নৌকাতেই আর ওঠা হবেনা।

C বলেন আর C++ বলেন, কোডফোর্সেস বলেন বা টপকোডার বলেন, uva বা uri বলেন, সবার উদ্দেশ্যই এক, প্রবলেম সলভ করা আর করানো।
একটা ফিল্ডে অনেক মানুষ ভালো করে, তাই বলে সবার কর্মপদ্ধতি সব সময় এক রকম হয়না, তাই খুব বেশি যাচাই বাছাই না করে, একটা পদ্ধতি ধরে কাজে নেমে পড়ুন, যখন আপনার নিজস্ব সেন্স তৈরী হবে, তখন নিজেই আস্তে আস্তে প্রয়োজন অনুযায়ী পদ্ধতিকে মোডিফাই করতে পারবেন।
নিজের কোডিং টেমপ্লেট নিজেই তৈরী করে ফেলবেন।
কাউন্ট ভেরিয়েবলের নাম cnt রাখবেন নাকি counter রাখবেন সেটা আপনার নিজস্ব স্টাইল।
টিউটোরিয়াল কালেক্ট করা দোষের কিছু না, টিউটোরিয়াল মাথায় না ঢুকানোই দোষ।

গ্রন্থগত বিদ্যা আর পর হস্তে ধন,
নহে বিদ্যা, নহে ধন, হলে প্রয়োজন..........

রবিবার, ১৭ জুলাই, ২০১৬

রিকার্শন -> দ্বিতীয় কিস্তিঃ ..........


আজ বলার চেষ্টা করবো রিকার্সিভ ফাংশন কিভাবে লিখতে হয়।

"ফাংশন লেখা তো এক্কেবারে সোজা একটা ব্যাপার, দুড়ুম দাড়াম করে ফাংশনের নাম, রিটার্ন টাইপ আর ভেতরে কলকব্জা গুলো লাগায় দিয়ে রিটার্ন স্টেটমেন্ট লিখে দিলেই হইলো, এ আবার আলাদা কি !!"

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

আগেই জানেন যে রিকার্সিভ ফাংশনের এক ( বা একাধিক ! ) বেজ কেস থাকে, যেখানে পৌঁছালে আরো গভীরে না যেয়ে সরাসরী কোনো কিছু রিটার্ন করে দেওয়া যায়। ফাংশন বডির শুরুতেই এই বেজ কেসের ব্যাপার টা হ্যান্ডেল করতে করে নেবেন। তা না করলে "আজীবন" ধরে আপনার প্রোগ্রাম থামার কোনো কারণ পাবে না, ( ক্রাশ করার আগ পর্যন্ত :/ )

ধরা যাক আপনি আপনি Fibonacci সিরিজ এর n তম পদ  টা বের করার জন্যে একটা রিকার্সিভ ফাংশন লিখবেন। এইটার বেজ কেস হইলো যদি n এর মান 1 বা 2 হয় তাহলে সরাসরী এন্সার হলো 1 ।
তাহলে ফাংশন বডির শুরুতেই লিখবেন if(n == 1 || n  == 2) return 1;
আবার ফ্যাক্টরিয়াল বের করার বেজ কেস হলো যদি n এর মান 0 হয় তবে সরাসরী সেটার এন্সার 1. তাহলে ফাংশন বডির শুরুতেই লিখবেন
if(n == 0) return 1;
ডায়নামিক প্রোগ্রামিং যদি রিকার্শন দিয়ে করেন সেক্ষেত্রে সাধারণত বেজ কেস হয় কোনো একটা স্টেটে আপনি আগে এসেছেন কিনা সেটা চেক করা। যদি আগে এসে থাকেন তবে সেই স্টেটের ভ্যালু আবার ক্যালকুলেশন না করে সরাসরী আগের সেভ করা জায়গা থেকে রিটার্ন করিয়ে দেওয়া যায়।
এটাই রিকার্সিভ ডায়নামিকের বেজ কেস। [ শাফায়েত ভাইয়ের ব্লগ থেকে ডায়নামিক প্রোগ্রামিং দেখতে পারেন ]

যাই হোক, বেজ কেসের কথা গেলো।

এবার আসলো ফাংশনের বাকি বডি লেখার পালা।
এবার আপনাকে একটু স্বার্থপরের মতো চিন্তা করতে হবে।

প্রথম কিস্তিতে বলেছিলাম আপনার উপরে অর্পিত কাজ টাকে আপনার ক্ষমতা যতোটুকু, ততোটুকু আপনার কাছে রেখে বাকি টুকু নতুন একটা "আপনি" তৈরী করে তাকে করতে দেওয়া।
স্বার্থপরের মতো চিন্তা করতে এইজন্যে বলছি যে ফাংশন বডি লেখার সময় আপনার ভাবা লাগবেনা যে আপনার অন্য "আমি" রা কিভাবে কাজ করবে, আপনি শুধু নিজের কথা ভাববেন আপনি কিভাবে আপনার কাজ টা করবেন, অর্থাৎ আপনি এখন যে ফাংশনের বডি টা লিখছেন, সে কিভাবে কাজ করবে আর কখন আরেকটা "নিজেকে" তৈরী করে তাকে কাজ গছিয়ে দিবে, আর সব শেষে কিভাবে নিজের "অন্য" কপি গুলো থেকে পাওয়া কাজের রেজাল্ট কে নিজের কাজের রেজাল্টের সাথে মার্জ করে ফাইনাল একটা রেজাল্ট রিটার্ণ করিয়ে দিবে, এগুলো ভাবলেই হচ্ছে।
যেমন Fibonacci সিরিজের n তম পদ বের করতে____
int fib(int n)
{
if(n == 1 || n == 2) return 1;
else return fib(n - 1) + fib(n - 2);
}
এখানে আপনার ভাবার দরকার নেই যে পরে যে দুটো  fib কে কল করেছেন তারা কিভাবে কাজ করবে।
জাস্ট লিখে ফেলেন :)

সুতরাং, রিকার্সিভ ফাংশন লেখার মোটামুটি ৩টা ধাপ পেলাম আমরা...
১) সবার আগে বেজ কেস হ্যান্ডেল করা।
২) ফাংশনের ওয়ার্কিং কলকব্জা লেখা
৩) নিজের তৈরী করা নিজের অন্যান্য কপি থেকে প্রাপ্ত রেজাল্ট কে নিজের সাথে মার্জ করে একটা ফাইনাল রেজাল্ট রিটার্ন করে দেওয়া।

খুব ভালো হয় যদি আপনি শাফায়েত ভাইয়ের ব্লগ থেকে কয়েন চেঞ্জ শিখেন। রিকার্শনের সাথে ডায়নামিক ফ্রী ;)



মূল পোস্ট ছিলো এখানে...

রিকার্শন প্রথম কিস্তি এখানে...

শাফায়েত ভাইয়ের কয়েন চেঞ্জ এখানে :)

শাফায়েত ভাইয়ের এলগরিদম ব্লগ :)

সিনট্যাক্স টেমপ্লেট বনাম প্রবলেম সলভিং স্কিল, ডিম আগে না মুরগী আগে ???

অনেকের কোড বের করলে দেখবেন উপরে একগাদা জিনিস #include করা, #define করা, বিগিনার রা এগুলো দেখলে ভয় পেয়ে যান, অনেকে জিজ্ঞাসা করেন এগুলো দরকার নাকি দরকার না।
আমার যেটা মনে হয় সেটা বলিঃ ভাই কোড দিয়ে প্রবলেম সলভ করতে হইলেও কোড কিন্তু ব্যাপার না, ব্যাপার হইলো আপনার চিন্তা, আপনার জ্ঞান, আপনার ডেপথ, আপনার রাফ খাতা কলম/পেন্সিলে করা ডিজাইন, এগুলো ঠিক করতে পারলে যে ল্যাংগুয়েজই হোক সেটা কোনো সমস্যা না, অনেক সিনট্যাক্স জানা আসলে সুবিধাজনক কিন্তু আপনার মাথা যদি আইডিয়া ধরতে না পারে তবে সিনট্যাক্স লিখে কি করবেন। বিশ্বের ১ নম্বর স্পোর্টস প্রোগ্রামার গেন্নাডি করোটকেভিছ ( #ট্যুরিস্ট ) এর কোড দেখেন, পোলাটা প্রতিটা কোড করার সময় নতুন করে শুরু করে, কোনো টেমপ্লেট নাই কোনো ডিফাইন নাই।
একেবারে শুরু তে bits/stdc++.h ইনক্লুড করে আর using namespace std ব্যাবহার করে। এরপর তার কোড শুরু, আর সে এমন একটা এডিটর ব্যাবহার করে ( Far Manager ) যাতে auto-completion ও নাই, অর্থাৎ সে সম্পুর্ণ কোড টাই লিখে প্রতিবার।
তারপরেও সে সবার আগে সব কিছু সলভ করে, এর কারণ তার মাথায় দ্রুত কার্যকর আইডিয়া আসে যা সে ইমপ্লিমেন্ট করে।
সে এতোই ফাস্ট এর সাথে এতোই এক্যুরেট যে, কেউ তার আগে লার্জ ইনপুট ( ফেসবুক হ্যাকার কাপ, গুগল কোড জ্যাম ) সাবমিট করলে সেই ব্যাটার টা ভুল হয়, গেন্নাডি ঠিকই ফার্স্ট হয় ( লাস্ট ২ বছরের অবজার্ভেশন )।
তাই, ইনক্লুড, ডিফাইন এগুলোর চিন্তা আপাতত বাদ দিয়ে সলভিং স্কিলের দিকে বেশি নজর দেন।
আর একটা কথা, যারা বলেন "c shesh, ebar kon boi theke c++ shikhbo", তাদের উদ্দেশ্যেঃ যদি আপনি ল্যাংগুয়েজ এক্সপার্ট হইতে চান তাহলে আমার কিছু বলার নেই, যদি প্রবলেম সলভার হইতে চান তাহলে ডিরেক্ট প্রবলেম সলভিং আর কনটেস্টে নেমে পড়ুন, ঠ্যালায় পড়ে অনেক কিছু শিখে যাবেন :)

মূল পোস্ট ছিলো এখানে...

#theromeo421


শনিবার, ২৫ জুন, ২০১৬

প্রোগ্রামিং কনটেস্টঃ পালাবি কোথায় ???



আমার বাচন ভঙ্গী মাঝে মাঝে একটু কড়া হয়ে যায় এজন্যে অনেক কথা ভালোবেসে বললেও অনেকে ধরতে পারেনা ভেতরে ভেতরে তাদের উপকারী কথা বলতেছি।
 অনেক ভাইয়া আপু কে অনেক সময় বকাঝকা করি, মূল কারণ থাকে কনটেস্ট নিয়ে তাদের ভিতি। তারা যেসব কথা বলেন সেগুলোর প্যাটার্ণ গুলা মোটামুটি এরকমঃ
ক) আমি একদম বাচ্চা, কিচ্ছু পারিনা।
খ) কনটেস্ট করার মতো যোগ্যতা আমার নেই।
গ) কনটেস্ট নিয়ে আমি কিছু জানিনা, কিভাবে কি করতে হয়।
ঘ) আস্তে ধীরে এগোতে চাই, বড় হয়ে কনটেস্ট করবো।
ঙ) সব শিখে মাঠে নামতে চাই, এখন আমি সব শিখবো, গ্রাফ থিওরী থেকে ডিপি সব ইকুয়েশন আমি মুখস্থ করে ফেলবো, তারপর.......................
........
তো যাই হোক, আসুন কিছু ব্যাপার লক্ষ করিঃ
এই কথা গুলো আপনারা হাজার হাজার ব্লগে পেতে পারেন, তবু আমি আমার মতো করে একটু বলি....
আমাদের ব্রেইন অনেক সময়েই ডায়নামিক ওয়েতে কাজ করে, বেশিরভাগ ডায়নামিক ভাবে সব কিছু শিখে। অর্থাৎ কোনো নতুন পরিস্থিতিতে কিভাবে মানিয়ে নিতে হয় সেটা তাৎক্ষনিক ভাবে বিভিন্ন পদ্ধতি এপ্লাই করে বুঝার চেষ্টা করে, প্রথম বার ব্যার্থ হলেও পরের বার পূর্বের অভিজ্ঞতা কাজে লাগিয়ে নতুন টেকনিক উদ্ভাবন করে যাতে ক্রমান্বয়ে দক্ষতা বাড়ে। একবারেই যদি ব্রেইনে সব কিছু ইন্সটল করা থাকতো তাহলে আমাদের কথা বলা শিখা লাগতো না, সাইকেল চালানো বা সাঁতার শিখা লাগতো না। বাচ্চারা কথা বলা শিখে কিভাবে ? পানি কে আম বলেই, আমার চাচাতো বোন, আমার আব্বুর নাম মিন্টু, ও ডাকে পিন্তু তাতু বলে, আমাকে ভাইজান না বলে ডাকে "বাইদান" বলে; কিন্তু এরা কিন্তু কথা বলার চেষ্টা থেকে দূরে সরে নেই, বাচ্চারা কিন্তু বলেনা যে ওকে, আমরা সমস্ত বর্ণমালা শিখে, ব্যাকরণ শিখে, রবীন্দ্র নজরুল শিখে তারপর চাচু কে চাচু বলবো, ভাইজান কে ভাইজান বলবো।
সাইকেল চালানো শিখতে আমার একা একা লেগেছিলো তিন দিন, সেই তিন দিন আমি স্কুলে যাইনি, এরপর প্রথম প্রথম আমি এখানে ওখানে প্রচুর মেরে দিয়েছি, ট্রাকের তলায় ( স্থির ছিলো :P ) চলে গিয়েছিলাম একবার.. কেউ তো কখনো বলেনাই যে সাইকেলের স্পোক কাকে বলে, ক্র্যাংক বা গিয়ার বা বিয়ারিং বা টায়ার কোন রাবার দিয়ে তৈরী এগুলা না জেনে তোমার সাইকেল চালানো অবৈধ ?
আমি এখনো সাঁতার পারিনা ( কনফেশন ), কারণ আমি জানি আমি পানি তে যথেষ্ট সময় দেইনি, অথচ তরল গতিবিদ্যা, বয়েন্সি, সারফেস টেনশনের সব সূত্র আমার ঠোঁটের আগায় ছিলো.. কই ? সেসব সূত্র তো আমাকে সাঁতার শেখাতে পারেনি..
আপনি কি ছোটবেলায় আছাড় না খেয়ে হাঁটা শিখেছিলেন ?
থিওরী অফ রিলেটিভিটি, গ্রাভিটেশনাল পুল এন্ড থাগ, অথবা ফ্রিকশনের সমস্ত ইকুয়েশন আপনার মুখস্থ ছিলো সেগুলো এপ্লাই করে হাঁটা শিখেছিলেন ? না, আপনি বারবার পড়ে গিয়েও উঠে দাঁড়িয়েছেন, নিজের শরীর কে ডায়নামিক্যালি ব্যালান্স করা শিখেছেন, সেই আপনি এখন হাত ছেঁড়েই সাইকেল চালান.. তাই তো ?
.....
যাই হোক, অনেক উদাহরণ দিলাম, এখন আসেন এগুলা রিলেট করি।
আপনি যখন প্রথম কনটেস্টে প্রথম কোনো সাবমিশন দিবেন, আপনার কোড দেখে জাজ রা হাসবে, কারণ আপনি বারেবার ইনপুট না নিয়ে একবারই নিয়েছেন, বা হয়তো নিউ লাইন প্রিন্ট করেন নাই, বা আপনি হয়তো ইনপুট না নিয়ে কাজ কম্ম শুরু করে দিছেন.. বাট বিলিভ মি, তারা আপনাকে দমিয়ে দিবেনা, ছোট বাচ্চার আধো আধো কথাও সবাই মন দিয়ে শোনে, সেই ইনফ্যান্সির একটা স্পেশ্যাল সুইটনেস আছে, সেই জাজ রা জানে এই আধো আধো কথার বাচ্চাটাই একদিন কবিতা লিখবে, একদিন গান লিখে স্টেজ কাঁপাবে, একদিন এই বাচ্চার ভাষণে লক্ষ মানুষ বুকের রক্ত দিয়ে দেশ স্বাধীন করবে, আপনার কি কনটেস্ট করে এখনি কীবোর্ড ফাঁটিয়ে ফেলতে ইচ্ছে করছেনা ? What are you waiting for ?
মাঠে নামলে আপনি দেখবেন প্রতিদিন আপনি নতুন কিছু শিখছেন, প্রথম দিন হয়তো কোডফোর্সেসের প্রথম প্রবলেম টা সলভ করতে ১ ঘন্টা ১০ মিনিট লাগবে.. পরদিন লাগবে ৩৫ মিনিট, এরপরে ১০। একসময়ে ৩ মিনিটেই প্রথম টা সলভ হয়ে যাবে, আপনি পরের প্রবলেমে মুভ করবেন, অন্য দের কোড হ্যাক করবেন, কেউ হ্যাক করতে চাইলে ডিফেন্ড করবেন, যুদ্ধ জমবে, আপনার কি রক্ত গরম হয়ে যাচ্ছেনা ? উত্তেজনায় নিঃশ্বাস ঘন হয়ে আসছে না ??
...........
কি হবে সলভ না করতে পারলে ? মরে যাবেন ? ফাঁসী দেওয়া হবে ? বন্ধুবান্ধব লজ্জা দিবে ? ওকে, কনটেস্ট কইরেন না। তিন বছর পরে যখন দেখবেন সবাই ১ ঘন্টার মধ্যে ৩/৪টা প্রবলেম সলভ করে ফেলছে, আপনি একটা হ্যান্ড মাইক কিনে এনে বলে বেড়িয়েন "আমি এখনো শিখছি"........



শনিবার, ১৮ জুন, ২০১৬

রিকার্শন -> প্রথম কিস্তিঃ



মনে করেন আপনার গ্রামে কর্মী আপনি একাই আছেন, গ্রামের মানুষ আপনাকে একটা কাজ দিছে, আপনি হিসেব করে দেখলেন কাজটা n টি অংশে বিভক্ত। সমস্যা হলো আপনার ক্যাপাসিটি মাত্র 1, অর্থাৎ আপনি কাজটার মাত্র 1 অংশ করতে পারবেন। যেহেতু গ্রামে আর কেউ কর্মী না, সেহেতু আপনার তখন আফসোস হবেঃ "ইসস, আমার মতো যদি আরেকজন থাকতো, তবে আমি আমার 1 অংশ করে তাকে বাকি n-1 অংশ টুকু করতে দিতাম।" এই ভেবে আপনি একটা "আপনি" কে তৈরী করলেন, অর্থাৎ গ্রামে "আপনি" এখন দুইটা, যেহেতু সেও একজন "আপনি", সেহেতু তার ক্যাপাসিটিও 1 অংশ করা। তো আপনি যখন তাকে n-1 অংশ করতে দিবেন, সে তখন মাথা চুলকে ভাববেঃ আরে, আমার ক্ষমতা তো মাত্র 1 অংশ করার, সো আরো একটা "আমি" থাকলে ভালো হতো যাকে আমি বাকি কাজটুকু করতে দিতাম"।
লক্ষ্য করুন, এই দ্বিতীয় "আপনি" কিন্তু জানেন না যে n এর মান একদম শুরু তে কি ছিলো, তার উপরে অর্পিত আসল মান n - 1 ই তার কাছে n । তো এই নতুন আপনির চরীত্র কাজ কর্ম আপনার আগের আপনির মতোই, সো সে নতুন আরেকটা "আপনি" তৈরী করে তাকে তার বাকি n - 1 অংশ করতে দিবে, যেটা আসলে প্রকৃত n - 1 - 1 = n - 2 অংশ ( দুইবার কাজটা 1 অংশ করে ছোট হয়েছে তাই দুইবার 1 বিয়োগ হলো )। এইভাবে এই কাহিনী যদি চলতে থাকে তবে একসময় কোনো এক নতুন "আপনি"র কাছে যে n টা পৌঁছাবে সেটার মান হবে 1 । সে কিন্তু আর ভাবার অবকাশ পাবেনা কোনো নতুন "আপনি" তৈরী করার কথা ভাবার। কারণ 1 তো তার ক্যাপাসিটির মধ্যেই পড়ে। সো এইভাবে সবকয়টা "আপনি" 1 অংশ করে করার ফলে পুরো কাজটাই শেষ হয়ে যাবে। তাই নয় কি ??
ওই যে শেষের যে "আপনি" আর কোনো নতুন "আপনি" কে তৈরী করার প্রয়োজন মনে করলো না, এইটাই হলো "বেজ কেস" অর্থাৎ ভিত্তি কেস, অর্থাৎ এর পরে আর গভীরে যাওয়ার দরকার নেই।
এতোক্ষণ যে সেম আপনিই একগাদা নিজেকে তৈরী করে একটা কাজ কে ছোট ছোট করে করে ফেললেন, এইটাই রিকার্শন, আর শেষে 1 নিয়ে থেমে যাওয়াটাই হলো রিকার্শনের বেজ কেস। এরপরে আর যাওয়া দরকার নেই।

মজা না ? ভেবে দেখেন কি চমতকার জিনিস টা।
আপনি জানেন, প্রকৃতিতেও রিকার্শন আছে ?
এই ডকুমেন্টারী টা টা আপনার জন্যেই।

মূল পোস্ট ছিলো এখানে...

রিকার্শন দ্বিতীয় কিস্তি...