কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে n ডিজিট রিমুভ করে সবচেয়ে ছোট সংখ্যা বানানো


সমস্যা

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা দুটি নম্বর m ও n প্রথম ও دومা আর্গুমেন্ট হিসেবে নেবে।

ফাংশনটির কাজ হলো m- থেকে n টি ডিজিট রিমুভ করা যাতে m সম্ভবত সবচেয়ে ছোট সংখ্যা হয়। অবশেষে সংখ্যাটি রিটার্ন করবে।

উদাহরণ:

const m = '45456757'; const n = 3;

আউটপুট হবে:

const output = '44557';

আউটপুট ব্যাখ্যা:

৫, ৬, ৭ ডিজিটগুলো রিমুভ করে সবচেয়ে ছোট সংখ্যা পাওয়া গেছে।

উদাহরণ

কোডটি নিচের মতো (লালচী অ্যালগরিদম + স্ট্যাক):

const m = '45456757'; const n = 3; const removeDigits = (m, n, stack = []) => { let arr = m.split('').map(Number); for(let el of arr){ while (n && stack.length && el < stack[stack.length - 1]){ stack.pop(); --n; }; stack.push(el); }; let begin = stack.findIndex(el => el > 0); let end = stack.length - n; return (!stack.length || begin == -1 || begin == end) ? "0" : stack.slice(begin, end).join('').toString(); }; console.log(removeDigits(m, n));

কোড ব্যাখ্যা:

লালচী অ্যালগরিদম ও স্ট্যাক ব্যবহার করা হয়েছে। ইনপুট স্ট্রিংয়ের প্রতিটি ডিজিট el বাম থেকে ডানে প্রসেস করা হয়। স্ট্যাকে থেকে el-এর চেয়ে বড় ডিজিটগুলো পপ করে নিচ্ছে (সর্বোচ্চ n বার)। বামের পজিশনগুলো বেশি গুরুত্বপূর্ণ, তাই লালচী পদ্ধতিতে সেগুলো ছোট ডিজিট দিয়ে ফিল করা হয়। শেষে যদি n বাকি থাকে, তবে ডানের দিক থেকে রিমুভ করা হয়।

আউটপুট

কনসোলে আউটপুট:

44557

  1. জাভাস্ক্রিপ্টে সংখ্যার অঙ্কগুলো আলাদা করা

  2. জাভাস্ক্রিপ্টে সংখ্যার ডিজিটগুলো নিম্নক্রমে সাজিয়ে সর্বোচ্চ সংখ্যা বের করা

  3. জাভাস্ক্রিপ্টে দুটি সংখ্যার প্রথম অঙ্ক বিনিময় করে পার্থক্য বের করা

  4. জাভাস্ক্রিপ্টে সংখ্যার ফ্যাক্টোরিয়ালের অঙ্ক সংখ্যা বের করা