Maison > interface Web > js tutoriel > Programme JavaScript pour vérifier la symétrie horizontale et verticale dans les matrices binaires

Programme JavaScript pour vérifier la symétrie horizontale et verticale dans les matrices binaires

王林
Libérer: 2023-09-02 17:05:08
avant
1235 Les gens l'ont consulté

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

Une matrice binaire est un tableau bidimensionnel qui ne contient que 1 et 0 éléments dans chaque cellule. La symétrie horizontale d'une matrice binaire signifie que si la première ligne est la même que la dernière ligne, la deuxième ligne est la même que l'avant-dernière ligne, et ainsi de suite. De même, la symétrie verticale signifie si la première et la dernière colonne, l'avant-dernière colonne et l'avant-dernière colonne, etc. sont identiques. Dans ce problème, on nous donne une matrice et nous détecterons si elle contient une symétrie horizontale et verticale.

Entrez

1 0 1
0 0 0 
1 0 1 
Copier après la connexion

Sortie

Both, horizontal and vertical symmetry is present. 
Copier après la connexion

Explication- La première et la dernière rangée sont les mêmes, ce qui signifie qu'il y a une symétrie horizontale. De même, les première et dernière colonnes sont identiques, ce qui entraîne une symétrie verticale.

Entrez

1 0 1
0 0 0 
1 1 0 
Copier après la connexion

Sortie

None of the symmetry is present.
Copier après la connexion

Explication- La première ligne n'est pas égale à la dernière ligne, et la première colonne n'est pas égale à la dernière colonne.

Méthode

Nous avons vu des exemples pour comprendre le problème posé, voyons maintenant les étapes pour implémenter le code -

  • Tout d'abord, nous allons définir une fonction pour vérifier la symétrie horizontale d'une matrice donnée. Cette fonction prendra un seul argument de la matrice donnée et retournera si la matrice actuelle est horizontalement symétrique.

  • Nous allons parcourir la matrice et pour chaque ligne, nous comparerons à la ligne de l'autre côté d'une ligne imaginaire qui passe par le milieu de la matrice et est à la même distance de la ligne actuelle.

  • Nous définirons une fonction pour vérifier la symétrie verticale d'une matrice donnée. Cette fonction prendra un argument, la matrice donnée.

  • Nous allons parcourir la matrice et pour chaque colonne nous comparerons à la colonne de l'autre côté d'une ligne imaginaire qui passe par le milieu de la matrice et est à la même distance de la colonne actuelle.

  • Nous appellerons ces deux fonctions et imprimerons les résultats en fonction des valeurs de retour.

Exemple

// 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);
Copier après la connexion

Sortie

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
Copier après la connexion

Complexité temporelle et spatiale

La complexité temporelle du code ci-dessus est O(N*M), où N est le nombre de lignes de la matrice donnée et M est le nombre de colonnes de la matrice donnée. Nous allons parcourir la matrice entière deux fois, une fois pour la symétrie horizontale et une fois pour la symétrie verticale.

La complexité spatiale du code ci-dessus est O(1) car nous n'utilisons aucun espace supplémentaire.

Conclusion

Dans ce tutoriel, nous avons implémenté un programme JavaScript pour savoir si une matrice donnée est symétrique horizontalement ou verticalement. La symétrie horizontale d'une matrice binaire signifie que si la première ligne est identique à la dernière ligne, alors la deuxième ligne est identique à l'avant-dernière ligne, et ainsi de suite. De même, la symétrie verticale signifie si la première et la dernière colonne, l'avant-dernière colonne et l'avant-dernière colonne, etc. sont identiques. Nous avons implémenté un programme avec une complexité temporelle O(N*M) et une complexité spatiale O(1).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal