morgan73

RubiksMatrix

Jun 4th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Linq;
  3.  
  4. namespace _5.RubiksMatrix
  5. {
  6.     class RubiksMatrix
  7.     {
  8.         static void Main()
  9.         {
  10.             int[] matrixSize = Console.ReadLine().Split(new[] { ' ', '\t', '\r' }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray();
  11.             int commandCount = int.Parse(Console.ReadLine());
  12.  
  13.             int[,] matrix = new int[matrixSize[0], matrixSize[1]];
  14.             fillMatrix(matrixSize, matrix);
  15.             int[,] matrixC = new int[matrixSize[0], matrixSize[1]];
  16.             fillMatrix(matrixSize, matrixC);
  17.  
  18.             CalculationMatrix(matrixSize, commandCount, matrix);
  19.            
  20.             for (int i = 0; i < matrixSize[0]; i++)
  21.             {
  22.                 for (int j = 0; j < matrixSize[1]; j++)
  23.                 {
  24.                     if (matrix[i,j] != matrixC[i,j])
  25.                     {
  26.                         int indexRow = 0;
  27.                         int indexCol = 0;
  28.                         for (int k = 0; k < matrixSize[0]; k++)
  29.                         {
  30.                             for (int y = 0; y < matrixSize[1]; y++)
  31.                             {
  32.                                 if (matrix[k,y] == matrixC[i,j])
  33.                                 {
  34.                                     indexRow = k;
  35.                                     indexCol = y;
  36.                                     int x = matrix[i, j];
  37.                                     matrix[i, j] = matrixC[i, j];
  38.                                     matrix[k, y] = x;
  39.                                     break;
  40.                                 }
  41.                             }
  42.                         }
  43.                         Console.WriteLine("Swap ({0}, {1}) with ({2}, {3})",i,j, indexRow,indexCol);
  44.  
  45.                     }
  46.                     else
  47.                     {
  48.                         Console.WriteLine("No swap required");
  49.                     }
  50.                 }
  51.             }
  52.         }
  53.  
  54.         private static void CalculationMatrix(int[] matrixSize, int commandCount, int[,] matrix)
  55.         {
  56.             for (int i = 0; i < commandCount; i++)
  57.             {
  58.                 string[] line = Console.ReadLine().Split(new[] { ' ', '\t', '\r' }, StringSplitOptions.RemoveEmptyEntries);
  59.                 int f = int.Parse(line[0]);
  60.                 int s = int.Parse(line[2]);
  61.                 if (line[1].ToLower() == "left")
  62.                 {
  63.                     for (int l = 0; l < s % matrixSize[1]; l++)
  64.                     {
  65.                         int firstNum = matrix[f, 0];
  66.                         for (int k = 0; k < matrixSize[1] - 1; k++)
  67.                         {
  68.                             matrix[f, k] = matrix[f, k + 1];
  69.                         }
  70.                         matrix[f, matrixSize[1] - 1] = firstNum;
  71.                     }
  72.                 }
  73.                 if (line[1].ToLower() == "right")
  74.                 {
  75.                     for (int l = 0; l < s % matrixSize[1]; l++)
  76.                     {
  77.                         int lastNum = matrix[f, matrixSize[1] - 1];
  78.                         for (int k = matrixSize[1] - 1; k > 0; k--)
  79.                         {
  80.                             matrix[f, k] = matrix[f, k - 1];
  81.                         }
  82.                         matrix[f, 0] = lastNum;
  83.                     }
  84.                 }
  85.                 if (line[1].ToLower() == "down")
  86.                 {
  87.                     for (int l = 0; l < s % matrixSize[0]; l++)
  88.                     {
  89.                         int lastNum = matrix[matrixSize[0] - 1, f];
  90.                         for (int k = matrixSize[0] - 1; k > 0; k--)
  91.                         {
  92.                             matrix[k, f] = matrix[k - 1, f];
  93.                         }
  94.                         matrix[0, f] = lastNum;
  95.                     }
  96.                 }
  97.                 if (line[1].ToLower() == "up")
  98.                 {
  99.                     for (int l = 0; l < s % matrixSize[0]; l++)
  100.                     {
  101.                         int firstNum = matrix[0, f];
  102.                         for (int k = 0; k < matrixSize[0] - 1; k++)
  103.                         {
  104.                             matrix[k, f] = matrix[k + 1, f];
  105.                         }
  106.                         matrix[matrixSize[0] - 1, f] = firstNum;
  107.                     }
  108.                 }
  109.             }
  110.         }
  111.  
  112.         private static void fillMatrix(int[] matrixSize, int[,] matrix)
  113.         {
  114.             int curNum = 1;
  115.             for (int i = 0; i < matrixSize[0]; i++)
  116.             {
  117.                 for (int j = 0; j < matrixSize[1]; j++)
  118.                 {
  119.                     matrix[i, j] = curNum;
  120.                     curNum++;
  121.                 }
  122.             }
  123.         }
  124.     }
  125. }
Add Comment
Please, Sign In to add comment