समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो संख्याओं की एक सरणी, arr, को पहला तर्क और एक संख्या, num, को दूसरा तर्क के रूप में लेता है।
सरणी में संख्याएं [1, 13] रेंज में हैं, सीमाएं समावेशी, जो प्लेइंग कार्ड्स के 1-आधारित इंडेक्स को दर्शाती हैं।
हमारे फ़ंक्शन को यह निर्धारित करना चाहिए कि क्या कार्ड्स को समूहों में पुनर्व्यवस्थित करने का कोई तरीका मौजूद है ताकि प्रत्येक समूह का आकार 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