Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Kiểm tra loại ma trận đặc biệt trong JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng 2-D arr làm đối số duy nhất. Hàm phải kiểm tra xem mọi đường chéo từ góc trên-trái đến dưới-phải có cùng phần tử hay không. Nếu đúng trả về true, ngược lại false.

Ví dụ, nếu đầu vào 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

Các đường chéo là: [1], [2,2], [6,6,6], [7,7,7], [8,8], [9]. Mỗi đường chéo các phần tử giống nhau -> True.

Ví dụ

Dưới đây là mã thực hiện:

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));

Kết quả

true