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

Kiểm tra các loại ma trận cụ thể trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy mảng 2-D gồm các ký tự, arr, làm đối số đầu tiên và duy nhất.

Hàm của chúng ta sẽ kiểm tra xem mọi đường chéo từ trên cùng bên trái đến dưới cùng bên phải có cùng một phần tử hay không.

Nếu đúng như vậy, chúng ta nên trả về true, ngược lại là false.

Ví dụ:nếu đầu vào của hàm là

Đầu vào

const arr = [
   [6, 7, 8, 9],
   [2, 6, 7, 8],
   [1, 2, 6, 7],
];

Đầu ra

const output = true;

Giải thích đầu ra

Trong mảng trên, các đường chéo là -

[1], [2,2], [6,6,6], [7,7,7], [8,8], [9]

Trong mỗi đường chéo, tất cả các phần tử đều giống nhau, vì vậy câu trả lời là Đúng.

Ví dụ

Sau đây là mã -

const arr = [
   [6, 7, 8, 9],
   [2, 6, 7, 8],
   [1, 2, 6, 7],
];
const checkMatrix = (arr = []) => {
   const validate = (row, col) => {
      while (
         row < arr.length
         && col < arr[0].length
         && arr[row + 1]
         && arr[row + 1][col + 1] !== undefined
      ) {
         if (arr[row + 1][col + 1] !== arr[row][col]) {
            return false
         }
         row += 1
         col += 1
      }
      return true
   }
   for (let i = 0; i < arr[0].length; i++) {
      if (!validate(0, i)) {
         return false
      }
   }
   for (let i = 0; i < arr.length; i++) {
      if (!validate(i, 0)) {
         return false
      }
   }
   return true
}
console.log(checkMatrix(arr));

Đầu ra

true