水平翻转矩阵并使用 JavaScript 反转它

问题

我们需要编写一个 JavaScript 函数,它接受一个二维二进制数组 arr(一个只包含 0 或 1 的数组)作为第一个也是唯一的参数。

我们的函数应该首先水平翻转矩阵,然后反转它,并返回结果矩阵。

水平翻转矩阵意味着矩阵的每一行都反转。例如,水平翻转 [1, 1, 0] 会导致 [0, 1, 1]。

矩阵求逆意味着每个0都被1替换,每个1被0替换。例如,将[0, 1, 1]求反的结果是[1, 0, 0]。

例如,如果函数的输入是

输入

const arr = [

   [1, 1, 0],

   [1, 0, 1],

   [0, 0, 0]

];

输出

const output = [

   [1,0,0],

   [0,1,0],

   [1,1,1]

];

输出说明

首先我们反转每一行 -

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

然后,我们反转矩阵 -

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

示例

以下是代码 -

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

输出结果
[ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 1, 1, 1 ] ]

以上是 水平翻转矩阵并使用 JavaScript 反转它 的全部内容, 来源链接: utcz.com/z/357631.html

回到顶部