আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম আর্গুমেন্ট হিসাবে স্ট্রিংগুলির অ্যারে এবং দ্বিতীয় আর্গুমেন্ট হিসাবে একটি স্ট্রিং নেয়৷
দ্বিতীয় আর্গুমেন্ট দ্বারা নির্দিষ্ট করা স্ট্রিং যে কোনো সম্ভাব্য উপায়ে অ্যারের স্ট্রিংগুলিকে একত্রিত করে গঠন করা যায় কিনা তা ফাংশনটিকে পরীক্ষা করা উচিত৷
উদাহরণস্বরূপ − যদি ইনপুট অ্যারে −
হয়const arr = ["for","car","keys","forth"];
এবং স্ট্রিং হল −
const str = "forthcarkeys";
তারপর আউটপুট সত্য হওয়া উচিত, কারণ স্ট্রিংটি অ্যারের 3, 1 এবং 2 সূচীতে উপাদানগুলির সংমিশ্রণ।
উদাহরণ
এর জন্য কোড হবে −
const arr = ["for","car","keys","forth"];
const str = "forthcarkeys";
const checkPossibility = (str = '', arr = []) => {
let possibilities = arr.reduce(function (r, a) {
let p = str.indexOf(a);
while (p !== −1) {
r.push({ word: a, position: p });
p = str.indexOf(a, p + 1);
}
return r;
}, []);
const findRecursively = (i, t) => {
let s = t.slice(), j;
if (i === possibilities.length) {
return !t.join('');
}
if (possibilities[i].word.split('').every(function (c, j) {
return
s[j + possibilities[i].position] !== ''; })) {
for (j = 0; j < possibilities[i].word.length; j++) {
s[j + possibilities[i].position] = '';
}
}
return findRecursively(i + 1, s) || findRecursively(i + 1, t);
}
return findRecursively(0, str.split(''));
};
console.log(checkPossibility(str, arr)); আউটপুট
এবং কনসোলে আউটপুট হবে −
true