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

জাভাস্ক্রিপ্টে ১ থেকে n পর্যন্ত নম্বর নামের অক্ষর সংখ্যা গণনা


সমস্যা বিবরণ

একটি নম্বর n দেওয়া আছে। ১ থেকে n পর্যন্ত সব নম্বরের ইংরেজি নামের টোটাল অক্ষর সংখ্যা বের করতে হবে।

উদাহরণ: n=5 → one, two, three, four, five → ৩+৩+৫+৪+৪ = ১৯

সমাধান

const sumUpto = (num = 1) => {
  let sum = 0;
  const lenHundred = 7; // "hundred"
  const lenThousand = 8; // "thousand"
  const lenPlaceOnes = [0,3,3,5,4,4,3,5,5,4]; // zero, one, two...
  const lenPlaceTens = [0,3,6,6,5,5,5,7,6,6]; // ten, twenty, thirty...
  
  for (let i = 1; i <= num; i++) {
    let placeOnes = i % 10;
    let placeTens = Math.floor(i / 10) % 10;
    let placeHundreds = Math.floor(i / 100) % 10;
    let placeThousands = Math.floor(i / 1000) % 10;
    
    sum += lenPlaceOnes[placeOnes];
    sum += lenPlaceTens[placeTens];
    
    if (placeHundreds != 0) {
      sum += lenHundred + lenPlaceOnes[placeHundreds];
    }
    if (placeThousands != 0) {
      sum += lenThousand + lenPlaceOnes[placeThousands];
    }
    if (placeTens === 1) { // teens (11-19)
      switch (placeOnes) {
        case 4: case 6: case 7: case 9: sum += 1; break;
      }
    }
    if (i > 100 && i % 100 != 0) {
      sum += 3; // "and"
    }
  }
  return sum;
};

console.log(sumUpto(12));  // 51
console.log(sumUpto(5));   // 19
console.log(sumUpto(122)); // 1280

আউটপুট

51 19 1280

ব্যাখ্যা

  • প্রি-ক্যালকুলেটেড ডিজিট লেন্থ অ্যারে ব্যবহার করা হয়েছে পারফরম্যান্সের জন্য।
  • ইংরেজি নম্বর নামের নিয়ম (teens, hundred, thousand, "and") হ্যান্ডেল করা হয়েছে।
  1. জাভাস্ক্রিপ্ট Number() ফাংশন

  2. জাভাস্ক্রিপ্টে উল্টো সংখ্যা প্রাইম কিনা যাচ্চ করা

  3. জাভাস্ক্রিপ্টে দুটি IP ভালুর মধ্যবর্তী IP অ্যাড্রেস সংখ্যা গণনা

  4. জাভাস্ক্রিপ্টে অ্যারেতে ত্রিভুজের বাহু बनाने वाले ট্রিপলেটের সংখ্যা গণনা