हमें एक JavaScript फ़ंक्शन लिखना है जो पहले तर्क के रूप में वर्णों की सरणियों की एक सरणी और दूसरे तर्क के रूप में एक स्ट्रिंग लेता है।
फ़ंक्शन को यह ढूंढना चाहिए कि क्या मैट्रिक्स में ऐसे वर्ण मौजूद हैं, जिनका गैर-दोहराव वाला संयोजन फ़ंक्शन को दूसरे तर्क के रूप में प्रदान की गई स्ट्रिंग को उत्पन्न करता है।
यदि ऐसा कोई संयोजन मौजूद है तो हमारा फ़ंक्शन true वापस करेगा, अन्यथा false।
उदाहरण के लिए -
यदि इनपुट सरणी और स्ट्रिंग हैं -
const arr = [
['s', 'd', 'k', 'e'],
['j', 'm', 'o', 'w'],
['y', 'n', 'l']
];
const str = 'don';
तो आउटपुट होना चाहिए -
const output = false;
उदाहरण
निम्नलिखित कोड देखें:
const arr = [
['s', 'd', 'k', 'e'],
['j', 'm', 'o', 'w'],
['y', 'n', 'l']
];
const str = 'don';
const containsWord = (arr = [], str = '') => {
if (arr.length === 0) {
return false;
};
const height = arr.length;
const width = arr[0].length;
const dirs = [[-1, 0], [0, 1], [1, 0], [0, -1]];
const tryWord = (x, y, k) => {
if (arr[x][y] !== str[k]) return false;
if (k === str.length - 1) return true;
arr[x][y] = '*';
for (const [dx, dy] of dirs) {
const i = x + dx;
const j = y + dy;
if (i >= 0 && i < height && j >= 0 && j < width) {
if (tryWord(i, j, k + 1)) return true;
}
}
arr[x][y] = str[k]; // reset
return false;
};
for (let i = 0; i < height; i++) {
for (let j = 0; j < width; j++) {
if (tryWord(i, j, 0)) return true;
}
}
return false;
};
console.log(containsWord(arr, str));
आउटपुट
कंसोल आउटपुट निम्नलिखित है -
false