Javascript
 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 ] ]

  1. 「new」演算子を使用してJavaScriptコンストラクターを作成しますか?

    以下は、「new」演算子を使用してJavaScriptコンストラクターを作成するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <

  2. Pythonで行列を反転および反転

    バイナリ行列マットがあるとします。行列の各行を選択してから、行を逆にする必要があります。その後、各ビットを反転します(0から1および1から0)。 したがって、入力が次のような場合 1 1 0 0 1 0 0 0 1 その場合、出力は次のようになります 1 0 0 1 0 1 0 1 1 これを解決するには、次の手順に従います- track:=0 マットの各列について、 行を逆にする トラッカー:=0 行の各valについて、 valが1の場合、 mat [track、