Introduction
Faire pivoter un tableau à deux dimensions, ou matrice, est un problème courant en programmation qui peut survenir dans différentes applications, en particulier dans les graphiques informatiques et la manipulation de données. Dans cet article de blog, nous allons nous plonger dans le processus de rotation d’une matrice de 4x4 de 90 degrés dans le sens des aiguilles d’une montre.
Comprendre le Problème
Imaginez que vous avez un tableau à deux dimensions structuré comme ceci :
[1][2][3][4]
[5][6][7][8]
[9][0][1][2]
[3][4][5][6]
Après avoir fait pivoter cette matrice de 90 degrés dans le sens des aiguilles d’une montre, elle devrait se transformer en :
[3][9][5][1]
[4][0][6][2]
[5][1][7][3]
[6][2][8][4]
En termes pratiques, chaque élément du tableau d’origine se déplace dans une nouvelle position en fonction de la rotation. Mais comment implémentons-nous cela dans un langage de programmation comme C# ? Décomposons cela étape par étape.
Solution
Étape 1 : Initialiser la Matrice
Tout d’abord, nous devons initialiser la matrice dans notre programme. Voici comment vous pouvez le faire :
int[,] array = new int[4,4] {
{ 1,2,3,4 },
{ 5,6,7,8 },
{ 9,0,1,2 },
{ 3,4,5,6 }
};
Étape 2 : Créer une Fonction pour Faire Pivoter la Matrice
Ensuite, nous allons créer une fonction appelée RotateMatrix
qui effectue la rotation requise. Cette fonction prendra la matrice d’origine et sa taille comme paramètres et renverra la matrice pivotée.
Voici l’implémentation de la fonction RotateMatrix
:
static int[,] RotateMatrix(int[,] matrix, int n) {
int[,] ret = new int[n, n];
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
ret[i, j] = matrix[n - j - 1, i];
}
}
return ret;
}
Étape 3 : Explication de la Fonction
- Déclaration de la Matrice : Nous déclarons une nouvelle matrice
ret
de la même taille que l’entrée. - Boucles Imbriquées : Nous utilisons une boucle imbriquée pour parcourir chaque élément de la matrice.
- Logique de Rotation : Pour chaque élément à la position
(i, j)
, nous le plaçons dans la nouvelle position(j, n - i - 1)
. Cette formule aide à faire pivoter correctement les éléments de 90 degrés dans le sens des aiguilles d’une montre.
Étape 4 : Tester la Fonction
Vous pouvez tester la fonction en l’appelant et en imprimant la matrice pivotée :
int[,] rotated = RotateMatrix(array, 4);
Assurez-vous simplement d’implémenter une méthode pour imprimer la matrice pour vérification.
Conclusion
Faire pivoter un tableau à deux dimensions est une tâche simple une fois que vous comprenez le mapping des indices. Bien que l’approche actuelle s’exécute en O(n^2) de complexité temporelle, l’optimisation des algorithmes pour des matrices plus grandes (comme 10000x10000) est un sujet de discussion en cours dans les algorithmes et les structures de données.
Maintenant, vous pouvez faire pivoter n’importe quel tableau à deux dimensions en C# en toute confiance. Bon codage !