এই সমস্যাতে, আমাদের একটি সংখ্যা N দেওয়া আছে। আমাদের কাজ হল সোনখ্যার স্লপ (Slope) বের করা।
একটি সংখ্যার স্লপ হল ওই সংখ্যার ম্যাক্সিমা (Maxima) এবং মিনিমা (Minima) ডিজিটের মোট সংখ্যা।
ম্যাক্সিমা ডিজিট হল সেই ডিজিট যার দুই পাশের প্রতিবেশী (পূর্বের এবং পরবর্তী) ডিজিটদুইটি ছোট।
মিনিমা ডিজিট হল সেই ডিজিট যার দুই পাশের প্রতিবেশী ডিজিটদুইটি বড়।
উদাহরণ দেখি:
ইনপুট
N = 9594459
আউটপুট
2
সমাধানের পদ্ধতি
এই সমস্যা সমাধানের একটি সহজ পদ্ধতি হল সংখ্যাটিকে ডিজিট বাই ডিজিট ট্রাভার্স করা (প্রথম এবং শেষ ডিজিট বাদ দিয়ে, কারণ সেগুলো ম্যাক্সিমা বা মিনিমা হিসেবে গণনা হয় না)। এখন, প্রতিটি ডিজিটের জন্য চেক করব যে সেটি এর পূর্বের ও পরবর্তী ডিজিটদুইটির চেয়ে বড় কিনা বা ছোট কিনা। শেষে ম্যাক্সিমা এবং মিনিমা কাউন্ট রিটার্ন করব।
উদাহরণ
আমাদের সমাধানের কাজকর্ম বোঝার জন্য প্রোগ্রাম:
#include <iostream> using namespace std; int findNumberSlope(string N, int len){ int slope = 0; for (int i = 1; i < len - 1; i++) { if (N[i] > N[i - 1] && N[i] > N[i + 1]) slope++; else if (N[i] < N[i - 1] && N[i] < N[i + 1]) slope++; } return slope; } int main(){ string N = "574473434329"; int len = N.size(); cout<<" The slope of the given number is "<<findNumberSlope(N, len); return 0; }
আউটপুট
The slope of the given number is 7