Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm từ trong ma trận trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng các ký tự làm đối số đầu tiên và một chuỗi làm đối số thứ hai.

Hàm sẽ tìm ra liệu có tồn tại các ký tự trong ma trận, tổ hợp không lặp lại tạo ra chuỗi được cung cấp cho hàm dưới dạng đối số thứ hai hay không.

Nếu tồn tại sự kết hợp như vậy, hàm của chúng ta sẽ trả về true, ngược lại là false.

Ví dụ -

Nếu mảng đầu vào và chuỗi là -

const arr = [
   ['s', 'd', 'k', 'e'],
   ['j', 'm', 'o', 'w'],
   ['y', 'n', 'l']
];
const str = 'don';

Sau đó, kết quả đầu ra phải là -

const output = false;

Ví dụ

Sau đây là mã -

const arr = [
   ['s', 'd', 'k', 'e'],
   ['j', 'm', 'o', 'width'],
   ['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));

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

false