সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি সংখ্যার অ্যারে arr প্রথম আর্গুমেন্ট এবং একটি সংখ্যা num দ্বিতীয় আর্গুমেন্ট হিসেবে নেবে।
অ্যারেতে থাকা সংখ্যাগুলো [১, ১৩] রেঞ্জে থাকে (লিমিটস ইনক্লুসিভ), যা প্লেয়িং কার্ডের ১-বেসড সূচক নির্দেশ করে।
ফাংশনটি নির্ণয় করবে কি কার্ডগুলোকে গ্রুপে সাজানো সম্ভব যাতে প্রতিটি গ্রুপের সাইজ num, এবং সেটি num টি последователь কার্ড নিয়ে গঠিত।
উদাহরণস্বরূপ, যদি ইনপুট হয় –
ইনপুট
const arr = [1, 4, 3, 2]; const num = 2;
আউটপুট
const output = 2;
আউটপুট ব্যাখ্যা
কারণ কার্ডগুলোকে এভাবে সাজানো যায় [1, 2], [3, 4]
উদাহরণ
নিচে কোডটি দেওয়া হল –
const arr = [1, 4, 3, 2];
const num = 2;
const canRearrange = (arr = [], num = 1) => {
const find = (map, n, num) => {
let j = 0;
while (j < num) {
if (!map[n + j]) return false;
else map[n + j] -= 1;
j++;
}
return true;
};
let map = {};
arr.sort(function(a, b) { return a - b; });
for (let n of arr) {
map[n] = map[n] ? map[n] + 1 : 1;
}
for (let n of arr) {
if (map[n] === 0 || find(map, n, num)) continue;
else return false;
}
return true;
};
console.log(canRearrange(arr, num));
আউটপুট
true