Advertisement
Guest User

5. RubiksMatrix

a guest
May 31st, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.70 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement