মনোটোনিক্যালি ইনক্রিজিং ডিজিট
একটি পূর্ণসংখ্যার মনোটোন ইনক্রিজিং ডিজিট থাকলে যদি এবং কেবল যদি প্রতিটি সংলগ্ন অঙ্ক জোড়া x এবং y x <= y সন্তুষ্ট করে।
সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি সংখ্যা num প্রথম ও একমাত্র আর্গুমেন্ট হিসেবে নেবে।
ফাংশনটি সাদা বড় সংখ্যা খুঁজে বের করবে যা num-এর চেয়ে কম বা সমান এবং যার ডিজিটগুলো মনোটোন ইনক্রিজিং।
উদাহরণস্বরূপ, যদি ইনপুট হয় –
ইনপুট
const num = 332;
আউটপুট
const output = 299;
উদাহরণ
নিচে কোডটি দেওয়া হল –
const num = 332;
const monotoneIncreasingDigits = (num) => {
const checkMonotone = (x) => {
if (x <= 9) {
return true;
}
let currentDigit = x % 10;
while (x) {
const next = Math.floor(x / 10);
const nextDigit = next % 10;
if (currentDigit >= nextDigit) {
currentDigit = nextDigit;
x = next;
} else {
return false;
}
}
return true;
};
if (checkMonotone(num)) {
return num;
}
const digits = num.toString().split('').map(x => Number(x));
return digits.reduce((acc, num, index) => {
if (num >= 1) {
const current = parseInt(digits.slice(0, index).join('') + num - 1 + new Array(digits.length - index - 1).fill('9').join(''), 10);
if (checkMonotone(current)) {
return Math.max(acc, current);
}
}
return acc;
}, 0);
};
console.log(monotoneIncreasingDigits(num));
আউটপুট
299