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

জাভাস্ক্রিপ্টে ডিজিটাল রুট সর্ট অ্যালগরিদম


কোনো পজিটিভ ইন্টিজারের ডিজিট রুট বলতে এর সকল ডিজিটের যোগফলকে বুঝায়। আমাদের একটি ইন্টিজারের অ্যারে দেওয়া আছে। আমাদের এটি এমনভাবে সর্ট করতে হবে যেন a, b এর আগে আসে যদি a-এর ডিজিট রুট b-এর ডিজিট রুট থেকে কম বা সমান হয়। যদি দুটি নাম্বারের ডিজিট রুট একই হয়, তবে সাধারণ অর্থে যেটি ছোট হবে সেটি আগে আসবে। উদাহরণস্বরূপ, ৪ এবং ১৩ এর ডিজিট রুট একই, কিন্তু ৪ < ১৩ সেজন্য ডিজিট রুট সর্টিং-এ ৪, ১৩-এর আগে আসবে।

উদাহরণস্বরূপ,

a = [13, 20, 7, 4] এর জন্য আউটপুট হবে [20, 4, 13, 7]

এই সমস্যার কোড লিখি -

এটিকে দুটি ফাংশনে ভাগ করব: একটি রিকার্সিভ ফাংশন যা নাম্বারের ডিজিটের যোগফল বের করবে, এবং একটি সর্টিং ফাংশন যা ডিজিটের যোগফলের ভিত্তিতে এলিমেন্টগুলো সাজাবে।

কোডটি হবে -

উদাহরণ

const arr = [54, 23, 8, 89, 26]; const recursiveCount = (num, count = 0) => {    if(num){       return recursiveCount(Math.floor(num/10), count+num%10);    };    return count; }; const sorter = (a, b) => {    const countDifference = recursiveCount(a) - recursiveCount(b);    return countDifference || a - b; }; arr.sort(sorter); console.log(arr);

আউটপুট

কনসোলে আউটপুট হবে -

[ 23, 8, 26, 54, 89 ]

  1. জাভাস্ক্রিপ্টে প্রিমের অ্যালগরিদম

  2. জাভাস্ক্রিপ্ট Sort() মেথড

  3. জাভাস্ক্রিপ্টে Array.prototype.sort() মেথড

  4. জাভাস্ক্রিপ্টে রেডিক্স সর্ট অ্যালগরিদম