একটি ম্যাট্রিক্সে, n*n ম্যাট্রিক্সে মোট n/2 স্কোয়ার থাকে এবং আমরা নেস্টেড লুপ ব্যবহার করে প্রতিটি বর্গকে একবারে প্রক্রিয়া করতে পারি। প্রতিটি বর্গক্ষেত্রে মৌল 4টি উপাদানের চক্রে চলে। আমরা প্রতিটি চক্রের জন্য কাঁটার বিপরীত দিকে জড়িত উপাদানগুলিকে অদলবদল করি
অবস্থানে থাকা উপাদান (n-1-j,i) অবস্থানে যাবে (i,j)
অবস্থানে থাকা উপাদান (i,j) অবস্থানে যাবে (j,n-1-i)
অবস্থানে থাকা উপাদান (j,n-1-i) অবস্থানে যাবে (n-1-i,n-1-j)
অবস্থানে থাকা উপাদান (n-1-i,n-1-j) অবস্থানে যাবে (n-1-j,i)
উদাহরণ
using System;
using System.Text;
namespace ConsoleApplication{
public class Matrix{
public void RotateMatrixBy90Degree(int[,] matrix){
int n = matrix.GetLength(0);
for (int i = 0; i < n / 2; i++){
for (int j = i; j < n - i - 1; j++){
int top = matrix[i, j];
//MOve left to top
matrix[i, j] = matrix[n - 1 - j, i];
//Move bottom to left
matrix[n - 1 - j, i] = matrix[n - i - 1, n - 1 - j];
//Move right to bottom
matrix[n - i - 1, n - 1 - j] = matrix[j, n - i - 1];
//Move top to right
matrix[j, n - i - 1] = top;
}
}
for (int i = 0; i < n; i++){
StringBuilder s = new StringBuilder();
for (int j = 0; j < n; j++){
s.Append(matrix[i, j] + " ");
}
Console.WriteLine(s);
s = null;
}
}
}
class Program{
static void Main(string[] args){
Matrix m = new Matrix();
int[,] matrix = { { 5, 1, 9, 11 }, { 2, 4, 8, 10 }, { 13, 3, 6, 7 }, { 15, 14, 12, 16 } };
m.RotateMatrixBy90Degree(matrix);
}
}
} আউটপুট
15 13 2 5 14 3 4 1 12 6 8 9 16 7 10 11