Maison  >  Article  >  interface Web  >  Programme JavaScript pour faire pivoter une matrice vers la droite K fois

Programme JavaScript pour faire pivoter une matrice vers la droite K fois

王林
王林avant
2023-08-24 22:09:061421parcourir

将矩阵向右旋转 K 次的 JavaScript 程序

Le terme « rotation à droite d'une matrice » signifie déplacer chaque colonne de la matrice vers la droite. Si spécifié, cette opération sera répétée "k" fois. En d’autres termes, il s’agit d’un déplacement vers la droite de la matrice qui se produit « k » fois. Ce programme peut être implémenté à l'aide de divers langages de programmation, mais un moyen simple mais efficace consiste à envisager d'utiliser JavaScript pour faire pivoter k fois une matrice vers la droite.

Comment faire pivoter une matrice K fois vers la droite ?

Faire pivoter une matrice k fois vers la droite est simple, cela implique de déplacer chaque colonne de la matrice k fois vers la droite. Pour démontrer cela, nous effectuons un exemple d’exécution manuelle d’une rotation à droite sur une matrice k fois.

Exemple

Prenons une matrice de taille N*M et un nombre K. Nous devons faire pivoter la matrice vers la droite k fois.

Input matrix: N = 4, M = 4, K = 3
1 2 3 4 
6 7 8 9 
0 9 8 7 
5 4 3 2 
Output matrix:
4 1 2 3
9 6 7 8
7 0 9 8
2 5 4 3

méthode

Le processus pour effectuer k rotations correctes peut sembler facile à comprendre, mais peut être un peu difficile à mettre en œuvre. La méthode consiste à copier les éléments de chaque colonne de la ligne i dans un tableau temporaire, jusqu'à m-k. Ensuite, nous déplaçons les éléments de k vers la fin de la ligne i jusqu'au début. Enfin, nous copions les éléments du tableau temporaire à la fin de chaque i ligne de la matrice.

Regardons l'algorithme de la méthode que nous utiliserons.

Algorithme pour une matrice tournant à droite K fois

Étape 1 - Déterminez le nombre de lignes et de colonnes dans la matrice.

Étape 2 - Calculez le nombre de fois que chaque ligne doit être déplacée en fonction de la valeur de k. Cela peut être fait en utilisant l'opérateur modulo (%).

Étape 3 - Pour chaque ligne de la matrice, créez un nouveau tableau contenant les éléments qui doivent être déplacés.

Étape 4 - Utilisez la méthode splice() pour supprimer les éléments décalés de la ligne d'origine et les ajouter au début de la nouvelle ligne.

Étape 5 - Définissez la ligne d'origine sur une nouvelle ligne.

Étape 6 - Répétez les étapes 3 à 5 pour chaque ligne de la matrice.

Exemple

Dans ce programme, nous définissons une classe MatrixRotation, qui possède deux méthodes statiques : displayMatrix() et rotateMatrixRight().

La méthode

displayMatrix() prend une matrice en entrée et l'affiche dans la console. Il utilise une boucle for pour parcourir chaque ligne de la matrice et la consigner dans la console.

La méthode

rotateMatrixRight() prend en entrée une matrice et un nombre k et renvoie une nouvelle matrice qui a subi une rotation de k positions vers la droite. Il utilise le même algorithme que la réponse précédente pour effectuer la rotation.

Dans l'exemple de code d'utilisation, nous définissons une matrice d'entrée et une valeur k, puis appelons la méthode rotateMatrixRight() pour effectuer la rotation. Nous affichons les matrices d'entrée et de sortie à l'aide de la méthode displayMatrix().

class MatrixRotation {
   static displayMatrix(matrix) {
      for (let i = 0; i < matrix.length; i++) {
         console.log(matrix[i]);
      }
   }
   static rotateMatrixRight(matrix, k) {
      const numRows = matrix.length;
      const numCols = matrix[0].length;
      // Calculate the number of times each row needs to be shifted
      const shifts = k % numCols;
      // Rotate each row of the matrix
      for (let i = 0; i < numRows; i++) {
         const row = matrix[i];
         // Create a new row that contains the shifted elements
         const newRow = row.slice(numCols - shifts).concat(row.slice(0, numCols - shifts));
         // Set the original row to the new row
         matrix[i] = newRow;
      }
      return matrix;
   }
}
// Example usage
const inputMatrix = [
   [1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]
];
const k = 2;
console.log("Input matrix:");
MatrixRotation.displayMatrix(inputMatrix);
const outputMatrix = MatrixRotation.rotateMatrixRight(inputMatrix, k);
console.log("Output matrix:");
MatrixRotation.displayMatrix(outputMatrix);

Conclusion

Faites pivoter à droite une matrice k fois en utilisant quelques étapes simples en JavaScript. La première étape consiste à déterminer le nombre de lignes et de colonnes dans la matrice. L'étape suivante consiste à calculer le nombre de fois que chaque ligne doit être décalée vers la droite en fonction de la valeur de k. Une fois le nombre de décalages déterminé, le programme peut parcourir chaque ligne de la matrice, créer un nouveau tableau contenant les éléments décalés de la ligne d'origine et mettre à jour la ligne d'origine avec les éléments décalés. En suivant ces étapes, nous pouvons faire pivoter une matrice vers la droite k fois en JavaScript.

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