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

Lật ma trận theo chiều ngang và đảo ngược ma trận bằng JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript có trong mảng nhị phân 2-D, arr, (một mảng chỉ bao gồm 0 hoặc 1), làm đối số đầu tiên và duy nhất.

Trước tiên, hàm của chúng ta nên lật ma trận theo chiều ngang, sau đó đảo ngược nó và trả về ma trận kết quả.

Để lật ma trận theo chiều ngang có nghĩa là mỗi hàng của ma trận được đảo ngược. Ví dụ:lật [1, 1, 0] theo chiều ngang dẫn đến [0, 1, 1].

Đảo ngược ma trận có nghĩa là mỗi 0 được thay bằng 1 và mỗi 1 được thay bằng 0. Ví dụ:đảo [0, 1, 1] dẫn đến [1, 0, 0].

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

Đầu vào

const arr = [
   [1, 1, 0],
   [1, 0, 1],
   [0, 0, 0]
];

Đầu ra

const output = [
   [1,0,0],
   [0,1,0],
   [1,1,1]
];

Giải thích đầu ra

Đầu tiên, chúng tôi đảo ngược từng hàng -

[[0,1,1],[1,0,1],[0,0,0]]

Sau đó, chúng tôi đảo ngược ma trận -

[[1,0,0],[0,1,0],[1,1,1]]

Ví dụ

Sau đây là mã -

const arr = [
   [1, 1, 0],
   [1, 0, 1],
   [0, 0, 0]
];
const flipAndInvert = (arr = []) => {
   const invert = n => (n === 1 ? 0 : 1)
   for(let i = 0; i < arr.length; i++) {
      for(let j = 0; j < arr[i].length / 2; j++) {
         const index2 = arr[i].length - 1 - j
         if(j === index2) {
            arr[i][j] = invert(arr[i][j])
         } else {
            const temp = arr[i][j]
            arr[i][j] = arr[i][index2]
            arr[i][index2] = temp
            arr[i][j] = invert(arr[i][j])
            arr[i][index2] = invert(arr[i][index2])
         }
      }
   }
};
flipAndInvert(arr);
console.log(arr);

Đầu ra

[ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 1, 1, 1 ] ]