সমস্যা বিবরণ
ক্রেডিট কার্ড নম্বরের অ্যারে দেওয়া আছে (ড্যাশ দিয়ে সেপারেটেড)। প্রতিটি কার্ডের ডিজিট সমষ্টি বের করে সর্বোচ্চ সমষ্টি والা কার্ড রিটার্ন করতে হবে। টাই হলে লাস্টটি।
সমাধান
const arr = ['4916-2600-1804-0530', '4779-252888-3972', '4252-278893-7978', '4556-4242-9283-2260'];
const findGreatestNumber = (arr) => {
let n, i = 0, sums;
sums = [];
while (i < arr.length) {
sums.push(sum(arr[i]));
i++;
}
n = sums.lastIndexOf(Math.max.apply(null, sums));
return arr[n];
};
const sum = (num) => {
let i, integers, res;
integers = num.split(/[-]+/g);
i = 0;
res = 0;
while (i < integers.length) {
res += Number(integers[i]);
i++;
}
return res;
};
console.log(findGreatestNumber(arr));
আউটপুট
4252-278893-7978
ব্যাখ্যা
split(/[-]+/g)দিয়ে ড্যাশ দিয়ে স্ট্রিং স্প্লিট।- প্রতিটি অংশ
Number()দিয়ে কনভার্ট করে যোগ। lastIndexOf(Math.max(...))দিয়ে টাই হলে লাস্ট ইনডেক্স পাওয়া যায়।