কম্পিউটার

কিভাবে C# ব্যবহার করে n*n আকারের একটি ম্যাট্রিক্সকে 90-ডিগ্রি k বার ঘোরানো যায়?


সম্পূর্ণ ম্যাট্রিক্সকে k সংখ্যায় ঘোরাতে হবে। একটি ম্যাট্রিক্সে 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 RotateMatrixByKTimes(int[,] matrix, int numberOftimes){
         int n = matrix.GetLength(0);
         for (int k = 0; k < numberOftimes; k++){
            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.RotateMatrixByKTimes(matrix, 2);
      }
   }
}

আউটপুট

16 12 14 15
7   6  3 13
10  8  4 2
11  9  1 5

  1. CSS ব্যবহার করে ম্যাট্রিক্স ট্রান্সফর্ম সহ div ঘোরান

  2. সি প্রোগ্রাম ব্যবহার করে একটি ম্যাট্রিক্সের ট্রান্সপোজ কিভাবে গণনা করা যায়?

  3. কিভাবে C++ ব্যবহার করে OpenCV তে একটি ভিডিও ঘোরানো যায়?

  4. সি++ ব্যবহার করে ওপেনসিভিতে একটি চিত্র কীভাবে ঘোরানো যায়?