আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা নির্ধারণ করে যে আমরা কতগুলি ভিন্ন উপায়ে একটি ক্রম থেকে মানগুলির একটি গ্রুপকে সরাতে পারি, মূল ক্রমটি ক্রমানুসারে (স্থিতিশীল) রেখে এবং মূল ক্রম থেকে প্রতিটি শুধুমাত্র একটি দৃষ্টান্ত মান মুছে ফেলার বিষয়টি নিশ্চিত করে৷
উদাহরণস্বরূপ − যদি সিকোয়েন্স অ্যারে −
হয়const arr = [1, 2, 1, 3, 1, 4, 4];
এবং সরানো অ্যারে হল −
const arr2 = [1, 4, 4];
তারপর উপাদানগুলির ক্রম ব্যাহত না করে এটি করার তিনটি সম্ভাব্য উপায় রয়েছে -
1 --> [2, 1, 3, 1] 2 --> [1, 2, 3, 1] 3 --> [1, 2, 1, 3]
অতএব, আমাদের ফাংশন এই ক্রমগুলির জন্য 3 আউটপুট করা উচিত। এর জন্য কোড হবে −
উদাহরণ
const arr = [1, 2, 1, 3, 1, 4, 4]; const arr2 = [1, 4, 4]; const possibleRemovalCombinations = (original, part) => { const sorter = (a, b) => a - b; part.sort(sorter); let place = []; part.forEach(el => { place[el] = [] }); original.forEach((el, index) => { if(place[el]){ place[el].push(index); } }); let connection = part.map(el => place[el].slice()); for(let i = 1; i < connection.length; i++){ if (part[i - 1] != part[i]){ continue; } let left = connection[i - 1][0]; while(connection[i][0] <= left){ connection[i].shift(); }; }; for (let i = connection.length - 2; i >= 0; i--) { if(part[i] != part[i + 1]){ continue; } let right = connection[i + 1][connection[i + 1].length - 1]; while(connection[i][connection[i].length - 1] >= right){ connection[i].pop(); }; }; const combineArray = (step, prev, combination) => { for (let i = 0; i < connection[step].length; i++) { let curr = connection[step][i]; if(prev >= curr && original[prev] == original[curr]){ continue; } if(step + 1 == connection.length){ combinations.push(combination.concat([curr])) } else { combineArray(step + 1, curr, combination.concat([curr])); }; }; }; let combinations = [], res = []; combineArray(0, -1, []); for (let i = 0; i < combinations.length; i++) { let copy = original.slice(); combinations[i].forEach(el => copy[el]); res[i] = copy.filter(el => el !== undefined); }; return res.length; }; console.log(possibleRemovalCombinations(arr, arr2));
আউটপুট
এবং কনসোলে আউটপুট হবে −
3