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

王林
王林avant
2023-09-02 17:05:081221parcourir

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 

Sortie

Both, horizontal and vertical symmetry is present. 

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 

Sortie

None of the symmetry is present.

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. p>

  • 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. p>

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

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer