Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

행렬을 가로로 뒤집고 JavaScript를 사용하여 반전

<시간/>

문제

2차원 이진 배열 arr(0 또는 1로만 구성된 배열)을 첫 번째이자 유일한 인수로 사용하는 JavaScript 함수를 작성해야 합니다.

우리 함수는 먼저 행렬을 수평으로 뒤집은 다음 반전하고 결과 행렬을 반환해야 합니다.

행렬을 수평으로 뒤집는다는 것은 행렬의 각 행이 반전된다는 것을 의미합니다. 예를 들어 [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 ] ]