আমাদের একটি ফাংশন ডিক্লেয়ার করতে হবে, ধরুন insertAllPositions, যেটি দুটি আর্গুমেন্ট নেবে:
একটি উপাদান, x, এবং একটি অ্যারে, arr। ফাংশনটি অবশ্যই অ্যারে-এর-অ্যারে রিটার্ন করবে, যেখানে প্রতিটি অ্যারে arr-র সাথে x কে একটি সম্ভাব্য পজিশনে ইনসার্ট করে বने থাকবে।
অর্থাৎ, যদি arr-এর দৈর্ঘ্য N হয়, তবে ফলাফল হবে N + 1 টি অ্যারের একটি অ্যারে।
উদাহরণস্বরূপ, insertAllPositions(10, [1,2,3]) এর ফলাফল হবে:
const output = [
[10,1,2,3],
[1,10,2,3],
[1,2,10,3],
[1,2,3,10]
];
আমাদের এই ফাংশনটি শুধুমাত্র রিকার্সন ব্যবহার করে লিখতে হবে।
উদাহরণ
নিচের কোডটি দেখুন:
const arr = [1, 2, 3];
const num = 10;
const insertAllPositions = (num, arr) => {
return arr.length ?
[[num, ...arr]]
.concat(insertAllPositions(num, arr.slice(1))
.map(el => {
return [arr[0]].concat(el);
})) :
[[num]]
};
console.log(insertAllPositions(num, arr));
আউটপুট
এটি কনসোলে নিচের আউটপুট তৈরি করবে:
[ [ 10, 1, 2, 3 ], [ 1, 10, 2, 3 ], [ 1, 2, 10, 3 ], [ 1, 2, 3, 10 ] ]