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

জাভাস্ক্রিপ্টে ডেসিমেলকে ফ্যাক্টোরিয়াল বেসে এনকোড ও ডিকোড করা


সমস্যা

ফ্যাক্টোরিয়াল বেস সিস্টেমে ডেসিমেল সংখ্যা লেখা একটি পদ্ধতি যেখানে বেস হলো পাওয়ার অফ নম্বর না হয়ে ফ্যাক্টোরিয়াল। এই সিস্টেমে, শেষ ডিজিট সবসময় ০ এবং বেস ০!। তার আগের ডিজিট ০ বা ১, বেস ১!। তার আগেরটি ০, ১, বা ২, বেস ২!। সাধারণত, শেষ থেকে nth ডিজিট ০, ১, ২, ..., n হবে এবং বেস n!।

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

উদাহরণস্বরূপ, ডেসিমেল ৪৬৩ এনকোড হবে "341010" কারণ:

463 = 3×5! + 4×4! + 1×3! + 0×2! + 1×1! + 0×0!

উদাহরণ

নিচে কোডটি দেওয়া হলো:

const num = 463;
const decimalToFact = (num = 1) => {
  const legend = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
  let str = '0';
  let i = 2;
  while(num){
    str = legend[num%i] + str;
    num = Math.floor(num / i);
    i++;
  }
  return str;
};
const factToDecimal = (str = '') => {
  const legend = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
  const l = str.length;
  return str
    .split('')
    .reduce((a,e,i) => Number(a) * (l - i) + legend.indexOf(e), 0);
};
const fact = decimalToFact(num);
const dec = factToDecimal(fact);
console.log(fact);
console.log(dec);

আউটপুট

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

341010
463

  1. জাভাস্ক্রিপ্ট const কীওয়ার্ড

  2. জাভাস্ক্রিপ্টে Const এবং Let এর পার্থক্য

  3. জাভাস্ক্রিপ্টে ডেসিমেল সংখ্যার বিট রিভার্স করে নতুন ডেসিমেল বের করা

  4. জাভাস্ক্রিপ্টে অ্যারে মার্জ ও ডুপ্লিকেট সরিয়ে(rectify) করা