আজকে আমাদের আলোচনার বিষয় বস্তু হলো একটা ইন্টিজার নাম্বার এর প্রতিটি ডিজিট কিভাবে আলাদা করা যায় ।
জিনিশ টা একদম ই খামখেয়ালি টাইপ মনে হলেও এর অনেক দরকার আছে ।
প্রব্লেম সল্ভিং এর জন্য এমন কিছু ট্রিক্স দরকার পড়ে যেখানে তোমাকে বলতে পারে ১২৩৪ এই ইন্টিজার নাম্বার টার মাঝে '৫' ডিজিট টা আছে কিনা বলতে ।
এটা তখন ই বলা সম্ভব হবে যখন তুমি ইন্টিজার এর প্রত্যেক টা ডিজিট চেক করতে পারবে ।
আর কথা না বাড়িয়ে কাজে চলে যাই চলো !!!
তো আমরা যদি একটা ইন্টিজার নাম্বার নেই আর সেখানে একটা ডিজিট খুঁজতে যাই তার জন্য প্রথমেই আমাদের ডিজিট গুলা আলাদা করে ফেলতে হবে ।
ডিভিশন আর মডিউলো ডিভিশন এর কথা মনে আছে ??
ডিভিশন হলো '/' এটা আর
মডিউলো ডিভিশন হলো '%' এইটা ।
ডিভিশন যদি একটা ইন্টিজার নাম্বার কে করা হয় তাহলে শুধু ভাগফল পাওয়া যাবে আর মডিউলো ডিভিশন করলে শুধু ভাগশেষ পাওয়া যাবে ।
আশা করি ব্যাপার টা পরিষ্কার হয়ে গেছে ।
এর পরেও যদি বুঝে না আসতে চায় একটু গুগল করে আসতে পারো । তবে ওপরের টুকু না বুঝে আর নিচে নামবে না ।
কারণ আমাদের কাজ এখন এই দুইটা জিনিশ কে নিয়েই করতে হবে ।
তো এখন তুমি যেহেতু নিচে নেমেই এসেছো । ধরে নিচ্ছি তোমার উপরের ধারণা পরিষ্কার ।
এখন আসো পরবর্তী ধাপে ।
মনে করি আমাদের আলোচ্য ইন্টিজার নাম্বার টা হলো '১২৩৪৫'
তাহলে এটার প্রত্যেক টা ডিজিট আলাদা আলাদা করে ভাঙবো আমরা । ভেঙ্গে নির্দিষ্ট একটা ডিজিট খুঁজবো ।
মনে করি যেই ডিজিট টা খুঁজবো সেটা হলো '৪'
এখন আমরা যদি ১২৩৪৫ কে ১০০০০ দ্বারা ডিভিশন করি তাহলে কতো পাবো ??
আমরা ১ পাবো । তুমি এখন ই করে দেখো
১২৩৪৫/১০০০০ = ১ হবে
তাহলে দেখা যাচ্ছে
১২৩৪৫/১০০০ = ১২ হবে
১২৩৪৫/১০০ = ১২৩ হবে
১২৩৪৫/১০ = ১২৩৪ হবে
১২৩৪৫/১ = ১২৩৪৫ হবে
আবার খেয়াল করো ,
১২৩৪৫ % ১০ = ৫ আসবে
১২৩৪ % ১০ = ৪ আসবে
১২৩ % ১০ = ৩ আসবে
১২ % ১০ = ২ আসবে
১ % ১০ = ১ আসবে
তাহলে এটা বলাই যায় একটা ইন্টিজার কে ১০ দিয়ে মডিউলো ডিভিশন করলে তার লাস্ট এর ডিজিট টা পাওয়া যাবে ।
আবার একটা ইন্টিজার কে ১ এর পরে যত গুলা শূন্য দিয়ে ডিভিশন করতে পারবো তার পেছন থেকে ততগুলা ডিজিট বাদ দিয়ে দিতে পারবো ।
কি হলো আমার কথা টা বুঝা যায় নি ?
না বুঝলে আবার পড়ো কি বলসি আর লজিক টা নিয়ে ভাবো ।
ক্লিয়ার হলে তবেই শুধু নিচে নামবে ।
নইলে যখন দেখবে কিছুই বুঝবে না তখন আমার লেখা তোমার বিরক্তির কারণ হতে পারে ।
নিচে যখন নেমেই এসেছো বুঝলাম তুমি একজন সুপার কুল মানুষ । সব বুঝে ফেলসো । গ্রেট !!!
হয়তো মনের মাঝে ঘুরছে ভাই ,শুরু করলেন টা কি ?? কথা ছিলো ডিজিট বের করবেন আলাদা করে আর আপনি ফাউ ফাউ পেচাল নিয়ে আছেন !
নাহ , একদম ই নাহ যা কিছু বললাম সব গুলা ই আমাদের লাগবে এখন । খেয়াল করো শুধু ।
আমাদের একটা ইন্টিজার এর ডিজিট বের করতে হলে ২য় শর্ত হলো তার সাইজ জানতে হবে ।
নইলে আমরা বুঝবে কেমন করে তাকে ১০ দিয়ে নাকি ১০০ দিয়ে ডিভিশন করতে হবে ??
তো কোনো ইন্টিজার এর সাইজ কেমনে বাইর করবো ? সেটা দেখতে পাবে
এই লিংক এ গেলে
ফুল একটা প্রোগ্রাম দেয়া আছে । আর সেখানে ডিভিশন দিয়েই কাজ করা হয়েছে
বুঝতে অসুবিধা হওয়ার কথা না ।
এখন আমরা জানি কোনো ইন্টিজার এর সাইজ কীভাবে জানতে হয় ।
এখন চলে আমাদের মেইন ড্রাইভার প্রোগ্রামে ।
এখন খেয়াল করো আমরা জানি আমাদের আলোচ্য ইন্টিজার হলো '১২৩৪৫'
আর আরেক টা প্রোগ্রামের দ্বারা জেনে গেসি তার সাইজ ৫ যার অর্থ হলো
এতে ৫টা ডিজিট আছে ।
এখন আমরা যেটা করবো তা হলো একটা ফর লুপ চালাবো ।
যেটাকে আমরা ৫ বার ঘুরাবো আর প্রতি বারে এই কাজ টুকু করবো
প্রথমে
১২৩৪৫/১০০০০ = ১ পাবো
তাকে আবার ১ % ১০ = ১ করবো
প্রথম লুপ একবার ঘুরার পরে ফাইনাল রেজাল্ট ১ পেলাম
এই ১ কে স্টোর করবো একটা ইন্টিজার টাইপ অ্যারে তে ।
তারমানে আমরা ১২৩৪৫ ইন্টিজার থেকে ইতোমধ্যে ১২৩৪৫ থেকে ১ কে আলাদা করে ফেলছি । আর সেই সাথে তাকে আলাদা করে একটা ইন্টিজার টাইপ অ্যারে তে সরিয়ে নিয়েছি ।
আর এটা অবশ্যই বলে দিতে হবে না যে অ্যারে এর সাইজ কতো হবে কারণ আমরা যখন জানতে পারলাম ইন্টিজার এর ডিজিট ৫ টা তখন ই অ্যারে এর সাইজ ৫ ডিফাইন করে দিয়েছি ।
এখন মনের মাঝে প্রশ্ন আসতেই পারে লুপ যখন ২য় বার ঘুরবে তখন আমাদের ২ কে অপসারণ করতে হবে , তখন
১২৩৪৫/১০০০ = ১২ আসবে
আর ১০০০০ থেকে ১০০০ ই বা কিভাবে হবে ???
খুব ই ভালো কথা এই জিনিশ গুলা আমরা একটা ইউজার ডিফাইন্ড ফাংশন দিয়ে কনট্রোল করবো বাইরে থেকে ।
মেইন প্রোগ্রামের ভেতরে এটা থাকবে না ।
১০ এর পাওয়ার প্রতিবার ই এক এক করে কমাবো আর তখন
১০০০০ থেকে ১০০০ ,১০০,১০,১ এমন হতে থাকবে ।
একই সাথে আমরা অ্যারে তে ডিজিট গুলা ঢুকাতে থাকবো ।
তারপরে এই লুপ শেষ হলে নিচে আরেকটা লুপ দিয়ে তুমি ফুল অ্যারে টা প্রিন্ট করে ফেলতে পারবে ।
আর আমরা জানি একটা অ্যারে এর যেকোনো এলিমেন্ট কে আমরা তার ইনডেক্স ধরে টান দিতে পারি ।
বাকি কাজ টা কি আর বলে দিতে হবে ??
তুমি এখন প্রত্যেক টা ইন্ডেক্স এর মান ধরে ধরে চেক দিবে যেটা খুজছিলাম '৪' সেটা আছে কিনা !!
তার জন্য আরেকটা লুপ চালাবে ।
আরেকটা কথা বলতে ভুলে গেছি , লুপটা কিন্তু আমরা ৫বার ঘুরাবো ঠিক ই তবে উল্টা ভাবে ।
যার মানে হলো ডিক্রিয়েজিং অর্ডারে । আর সাইজ যেহেতু ৫ তাই পাচ বার ঘুরলেও আমরা শুরু করবো ৪ থেকে । মানে সাইজ থেকে ১ কম থেকে শুরু হবে আর
একদম শূণ্য পর্যন্ত চলবে ।
কেন এমন করলাম ?? সেইটা নিজের ব্রেইন ব্যবহার করে বের করবে আশা করি ,
আর অবশ্যই তুমি সেটা পারবে কারণ আমি সব কিছু ই বলে দিয়েছি উপরে , আর উত্তর টা এর মাঝেই লুকিয়ে আছে ।
এইতো হয়ে গেলো !!!
নিজে চেষ্টা করো প্রোগ্রাম টা করতে ।
যদি না ই পারো তাহলে আমার কোড টা দেখতে পারো নিচে এই লিংক এ
আজ এই পর্যন্তই ।
অসংখ্য ধন্যবাদ তোমাকে আর তোমারে সুপার পাওয়ার ফুল ব্রেইন কে আমার কথা গুলার অর্থ উদ্ধার করার চেষ্টা করার জন্য ।
তোমার দিন সুন্দর হোক ।
২৩-০৫-২০২০
রাত ৯টা ৫৯ ।
জিনিশ টা একদম ই খামখেয়ালি টাইপ মনে হলেও এর অনেক দরকার আছে ।
প্রব্লেম সল্ভিং এর জন্য এমন কিছু ট্রিক্স দরকার পড়ে যেখানে তোমাকে বলতে পারে ১২৩৪ এই ইন্টিজার নাম্বার টার মাঝে '৫' ডিজিট টা আছে কিনা বলতে ।
এটা তখন ই বলা সম্ভব হবে যখন তুমি ইন্টিজার এর প্রত্যেক টা ডিজিট চেক করতে পারবে ।
আর কথা না বাড়িয়ে কাজে চলে যাই চলো !!!
তো আমরা যদি একটা ইন্টিজার নাম্বার নেই আর সেখানে একটা ডিজিট খুঁজতে যাই তার জন্য প্রথমেই আমাদের ডিজিট গুলা আলাদা করে ফেলতে হবে ।
ডিভিশন আর মডিউলো ডিভিশন এর কথা মনে আছে ??
ডিভিশন হলো '/' এটা আর
মডিউলো ডিভিশন হলো '%' এইটা ।
ডিভিশন যদি একটা ইন্টিজার নাম্বার কে করা হয় তাহলে শুধু ভাগফল পাওয়া যাবে আর মডিউলো ডিভিশন করলে শুধু ভাগশেষ পাওয়া যাবে ।
যেমনঃ
৫/২ = ২ পাবো
অন্যদিকে
৫%২ = ১ পাবো
আশা করি ব্যাপার টা পরিষ্কার হয়ে গেছে ।
এর পরেও যদি বুঝে না আসতে চায় একটু গুগল করে আসতে পারো । তবে ওপরের টুকু না বুঝে আর নিচে নামবে না ।
কারণ আমাদের কাজ এখন এই দুইটা জিনিশ কে নিয়েই করতে হবে ।
তো এখন তুমি যেহেতু নিচে নেমেই এসেছো । ধরে নিচ্ছি তোমার উপরের ধারণা পরিষ্কার ।
এখন আসো পরবর্তী ধাপে ।
মনে করি আমাদের আলোচ্য ইন্টিজার নাম্বার টা হলো '১২৩৪৫'
তাহলে এটার প্রত্যেক টা ডিজিট আলাদা আলাদা করে ভাঙবো আমরা । ভেঙ্গে নির্দিষ্ট একটা ডিজিট খুঁজবো ।
মনে করি যেই ডিজিট টা খুঁজবো সেটা হলো '৪'
এখন আমরা যদি ১২৩৪৫ কে ১০০০০ দ্বারা ডিভিশন করি তাহলে কতো পাবো ??
আমরা ১ পাবো । তুমি এখন ই করে দেখো
১২৩৪৫/১০০০০ = ১ হবে
তাহলে দেখা যাচ্ছে
১২৩৪৫/১০০০ = ১২ হবে
১২৩৪৫/১০০ = ১২৩ হবে
১২৩৪৫/১০ = ১২৩৪ হবে
১২৩৪৫/১ = ১২৩৪৫ হবে
আবার খেয়াল করো ,
১২৩৪৫ % ১০ = ৫ আসবে
১২৩৪ % ১০ = ৪ আসবে
১২৩ % ১০ = ৩ আসবে
১২ % ১০ = ২ আসবে
১ % ১০ = ১ আসবে
তাহলে এটা বলাই যায় একটা ইন্টিজার কে ১০ দিয়ে মডিউলো ডিভিশন করলে তার লাস্ট এর ডিজিট টা পাওয়া যাবে ।
আবার একটা ইন্টিজার কে ১ এর পরে যত গুলা শূন্য দিয়ে ডিভিশন করতে পারবো তার পেছন থেকে ততগুলা ডিজিট বাদ দিয়ে দিতে পারবো ।
কি হলো আমার কথা টা বুঝা যায় নি ?
না বুঝলে আবার পড়ো কি বলসি আর লজিক টা নিয়ে ভাবো ।
ক্লিয়ার হলে তবেই শুধু নিচে নামবে ।
নইলে যখন দেখবে কিছুই বুঝবে না তখন আমার লেখা তোমার বিরক্তির কারণ হতে পারে ।
নিচে যখন নেমেই এসেছো বুঝলাম তুমি একজন সুপার কুল মানুষ । সব বুঝে ফেলসো । গ্রেট !!!
হয়তো মনের মাঝে ঘুরছে ভাই ,শুরু করলেন টা কি ?? কথা ছিলো ডিজিট বের করবেন আলাদা করে আর আপনি ফাউ ফাউ পেচাল নিয়ে আছেন !
নাহ , একদম ই নাহ যা কিছু বললাম সব গুলা ই আমাদের লাগবে এখন । খেয়াল করো শুধু ।
আমাদের একটা ইন্টিজার এর ডিজিট বের করতে হলে ২য় শর্ত হলো তার সাইজ জানতে হবে ।
নইলে আমরা বুঝবে কেমন করে তাকে ১০ দিয়ে নাকি ১০০ দিয়ে ডিভিশন করতে হবে ??
তো কোনো ইন্টিজার এর সাইজ কেমনে বাইর করবো ? সেটা দেখতে পাবে
এই লিংক এ গেলে
ফুল একটা প্রোগ্রাম দেয়া আছে । আর সেখানে ডিভিশন দিয়েই কাজ করা হয়েছে
বুঝতে অসুবিধা হওয়ার কথা না ।
এখন আমরা জানি কোনো ইন্টিজার এর সাইজ কীভাবে জানতে হয় ।
এখন চলে আমাদের মেইন ড্রাইভার প্রোগ্রামে ।
এখন খেয়াল করো আমরা জানি আমাদের আলোচ্য ইন্টিজার হলো '১২৩৪৫'
আর আরেক টা প্রোগ্রামের দ্বারা জেনে গেসি তার সাইজ ৫ যার অর্থ হলো
এতে ৫টা ডিজিট আছে ।
এখন আমরা যেটা করবো তা হলো একটা ফর লুপ চালাবো ।
যেটাকে আমরা ৫ বার ঘুরাবো আর প্রতি বারে এই কাজ টুকু করবো
প্রথমে
১২৩৪৫/১০০০০ = ১ পাবো
তাকে আবার ১ % ১০ = ১ করবো
প্রথম লুপ একবার ঘুরার পরে ফাইনাল রেজাল্ট ১ পেলাম
এই ১ কে স্টোর করবো একটা ইন্টিজার টাইপ অ্যারে তে ।
তারমানে আমরা ১২৩৪৫ ইন্টিজার থেকে ইতোমধ্যে ১২৩৪৫ থেকে ১ কে আলাদা করে ফেলছি । আর সেই সাথে তাকে আলাদা করে একটা ইন্টিজার টাইপ অ্যারে তে সরিয়ে নিয়েছি ।
আর এটা অবশ্যই বলে দিতে হবে না যে অ্যারে এর সাইজ কতো হবে কারণ আমরা যখন জানতে পারলাম ইন্টিজার এর ডিজিট ৫ টা তখন ই অ্যারে এর সাইজ ৫ ডিফাইন করে দিয়েছি ।
এখন মনের মাঝে প্রশ্ন আসতেই পারে লুপ যখন ২য় বার ঘুরবে তখন আমাদের ২ কে অপসারণ করতে হবে , তখন
১২৩৪৫/১০০০ = ১২ আসবে
আর ১০০০০ থেকে ১০০০ ই বা কিভাবে হবে ???
খুব ই ভালো কথা এই জিনিশ গুলা আমরা একটা ইউজার ডিফাইন্ড ফাংশন দিয়ে কনট্রোল করবো বাইরে থেকে ।
মেইন প্রোগ্রামের ভেতরে এটা থাকবে না ।
১০ এর পাওয়ার প্রতিবার ই এক এক করে কমাবো আর তখন
১০০০০ থেকে ১০০০ ,১০০,১০,১ এমন হতে থাকবে ।
একই সাথে আমরা অ্যারে তে ডিজিট গুলা ঢুকাতে থাকবো ।
তারপরে এই লুপ শেষ হলে নিচে আরেকটা লুপ দিয়ে তুমি ফুল অ্যারে টা প্রিন্ট করে ফেলতে পারবে ।
আর আমরা জানি একটা অ্যারে এর যেকোনো এলিমেন্ট কে আমরা তার ইনডেক্স ধরে টান দিতে পারি ।
বাকি কাজ টা কি আর বলে দিতে হবে ??
তুমি এখন প্রত্যেক টা ইন্ডেক্স এর মান ধরে ধরে চেক দিবে যেটা খুজছিলাম '৪' সেটা আছে কিনা !!
তার জন্য আরেকটা লুপ চালাবে ।
আরেকটা কথা বলতে ভুলে গেছি , লুপটা কিন্তু আমরা ৫বার ঘুরাবো ঠিক ই তবে উল্টা ভাবে ।
যার মানে হলো ডিক্রিয়েজিং অর্ডারে । আর সাইজ যেহেতু ৫ তাই পাচ বার ঘুরলেও আমরা শুরু করবো ৪ থেকে । মানে সাইজ থেকে ১ কম থেকে শুরু হবে আর
একদম শূণ্য পর্যন্ত চলবে ।
কেন এমন করলাম ?? সেইটা নিজের ব্রেইন ব্যবহার করে বের করবে আশা করি ,
আর অবশ্যই তুমি সেটা পারবে কারণ আমি সব কিছু ই বলে দিয়েছি উপরে , আর উত্তর টা এর মাঝেই লুকিয়ে আছে ।
এইতো হয়ে গেলো !!!
নিজে চেষ্টা করো প্রোগ্রাম টা করতে ।
যদি না ই পারো তাহলে আমার কোড টা দেখতে পারো নিচে এই লিংক এ
আজ এই পর্যন্তই ।
অসংখ্য ধন্যবাদ তোমাকে আর তোমারে সুপার পাওয়ার ফুল ব্রেইন কে আমার কথা গুলার অর্থ উদ্ধার করার চেষ্টা করার জন্য ।
তোমার দিন সুন্দর হোক ।
২৩-০৫-২০২০
রাত ৯টা ৫৯ ।
Written By -