Rumah > hujung hadapan web > tutorial js > Program JavaScript untuk menyemak simetri mendatar dan menegak dalam matriks binari

Program JavaScript untuk menyemak simetri mendatar dan menegak dalam matriks binari

王林
Lepaskan: 2023-09-02 17:05:08
ke hadapan
1236 orang telah melayarinya

JavaScript 程序检查二进制矩阵中的水平和垂直对称性

Matriks binari ialah tatasusunan dua dimensi yang mengandungi hanya 1 dan 0 elemen dalam setiap sel. Simetri mendatar matriks binari bermakna jika baris pertama sama dengan baris terakhir, baris kedua adalah sama dengan baris kedua hingga terakhir, dan seterusnya. Begitu juga, simetri menegak bermaksud sama ada lajur pertama dan terakhir, lajur kedua hingga terakhir dan lajur kedua hingga terakhir, dsb., adalah sama. Dalam masalah ini, kita diberikan matriks dan kita akan mengesan sama ada terdapat simetri mendatar dan menegak di dalamnya.

Masuk

1 0 1
0 0 0 
1 0 1 
Salin selepas log masuk

Output

Both, horizontal and vertical symmetry is present. 
Salin selepas log masuk

Penjelasan - Baris pertama dan terakhir adalah sama, bermakna terdapat simetri mendatar. Begitu juga, lajur pertama dan terakhir adalah sama, menghasilkan simetri menegak.

Masuk

1 0 1
0 0 0 
1 1 0 
Salin selepas log masuk

Output

None of the symmetry is present.
Salin selepas log masuk

Penjelasan- Baris pertama tidak sama dengan baris terakhir dan lajur pertama tidak sama dengan lajur terakhir.

kaedah

Kami telah melihat contoh untuk memahami masalah yang diberikan, sekarang mari kita lihat langkah-langkah untuk melaksanakan kod -

  • Pertama, kita akan mentakrifkan fungsi untuk menyemak simetri mendatar bagi matriks tertentu. Fungsi ini akan mengambil satu hujah bagi matriks yang diberikan dan mengembalikan sama ada matriks semasa adalah simetri mendatar.

  • Kami akan melelakan melalui matriks dan untuk setiap baris kami akan membandingkannya dengan baris di sisi lain garis khayalan yang melalui tengah matriks dan jarak yang sama dari baris semasa .

  • Kami akan mentakrifkan fungsi untuk menyemak simetri menegak bagi matriks tertentu. Fungsi ini akan mengambil satu hujah, matriks yang diberikan.

  • Kami akan lelaran melalui matriks dan untuk setiap lajur kami akan membandingkan dengan lajur di sebelah lain garis khayalan yang melalui tengah matriks dan jarak yang sama dari lajur semasa.

  • Kami akan memanggil kedua-dua fungsi ini dan mencetak keputusan berdasarkan nilai pulangan.

Contoh

// function to check horizontal symmetry 
function horizontalSymm(mat){
   var rows = mat.length;
   var cols = mat[0].length; 
   for(var i = 0; i< rows/2; i++){
      for(var j = 0;j<cols; j++){
         if(mat[i][j] != mat[rows-i-1][j]){
            return false;
         }
      }
   }
   return true;
}

// function to check vertical symmetry 
function verticalSymm(mat){
   var rows = mat.length;
   var cols = mat[0].length; 
   for(var i = 0; i< cols/2; i++){
      for(var j = 0;j<rows; j++){
         if(mat[j][i] != mat[j][cols-i-1]){
            return false;
         }
      }
   }
   return true;
}

// function to check the symmetry of the given matrix 
function check(mat){
   var horSymm = horizontalSymm(mat);
   var varSymm = verticalSymm(mat);
   if(horSymm && varSymm){
      console.log("Both, horizontal and vertical symmetries are present in the given matrix");
   }
   else if(horSymm){
      console.log("The given binary matrix is only horizontally symmetric");
   }
   else if(varSymm){
      console.log("The given binary matrix is only vertically symmetric");
   }
   else{
      console.log("The given binary matrix is neither horizontally symmetric nor vertically symmetric");
   }
}

// defining the given matrix 
var mat = [[1, 0, 1], [0, 0, 0], [1, 0, 1]];
console.log("The given matrix is: ")
console.log(mat);
check(mat);

// defining the given matrix 
var mat = [[1, 0, 1], [0, 0, 0], [1, 1, 0]];
console.log("The given matrix is: ")
console.log(mat);
check(mat);
Salin selepas log masuk

Output

The given matrix is: 
[ [ 1, 0, 1 ], [ 0, 0, 0 ], [ 1, 0, 1 ] ]
Both, horizontal and vertical symmetries are present in the given matrix
The given matrix is: 
[ [ 1, 0, 1 ], [ 0, 0, 0 ], [ 1, 1, 0 ] ]
The given binary matrix is neither horizontally symmetric nor vertically symmetric
Salin selepas log masuk

Kerumitan Masa dan Ruang

Kerumitan masa kod di atas ialah O(N*M), di mana N ialah bilangan baris matriks yang diberikan dan M ialah bilangan lajur matriks yang diberikan. Kami akan melintasi keseluruhan matriks dua kali, sekali untuk simetri mendatar dan sekali untuk simetri menegak.

Kerumitan ruang kod di atas ialah O(1) kerana kami tidak menggunakan sebarang ruang tambahan.

KESIMPULAN

Dalam tutorial ini, kami melaksanakan program JavaScript untuk mencari sama ada matriks yang diberikan adalah simetri mendatar atau menegak. Simetri mendatar matriks binari bermakna jika baris pertama adalah sama dengan baris terakhir, maka baris kedua adalah sama dengan baris kedua ke terakhir, dan seterusnya. Begitu juga, simetri menegak bermaksud sama ada lajur pertama dan terakhir, lajur kedua hingga terakhir dan lajur kedua hingga terakhir, dll. adalah sama. Kami melaksanakan program dengan kerumitan masa O(N*M) dan kerumitan ruang O(1).

Atas ialah kandungan terperinci Program JavaScript untuk menyemak simetri mendatar dan menegak dalam matriks binari. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan