Advertisement
social1986

Untitled

Dec 8th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. using System;
  2.  
  3. namespace _01.Dangerous_Floor
  4. {
  5. public class Program
  6. {
  7. public static void Main()
  8. {
  9. var matrix = new string[8][];
  10.  
  11. for (int row = 0; row < 8; row++)
  12. {
  13. var currentRow = Console.ReadLine()
  14. .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
  15. matrix[row] = currentRow;
  16. }
  17.  
  18. while (true)
  19. {
  20. var inputArgs = ReadComands()
  21. .Split('-');
  22.  
  23. if (inputArgs[0] == "END")
  24. {
  25. break;
  26. }
  27.  
  28. var piece = inputArgs[0];
  29. var rowColNow = inputArgs[1];
  30. var rowNow = (int)char.GetNumericValue(rowColNow[0]);
  31. var colNow = (int)char.GetNumericValue(rowColNow[1]);
  32. var rowColToBeMoved = inputArgs[2];
  33. var rowToBeMoved = (int)char.GetNumericValue(rowColToBeMoved[0]);
  34. var colToBeMoved = (int)char.GetNumericValue(rowColToBeMoved[1]);
  35.  
  36. if (IsNotOnBoard(matrix, piece, rowNow, colNow))
  37. {
  38. Console.WriteLine("There is no such a piece!");
  39. continue;
  40. }
  41. if (IsMoveValid(piece, rowNow, colNow, rowToBeMoved, colToBeMoved, matrix))
  42. {
  43. matrix[rowToBeMoved][colToBeMoved] = piece;
  44. }
  45. else
  46. {
  47. Console.WriteLine("Invalid move");
  48. }
  49. }
  50. }
  51.  
  52. public static string ReadComands()
  53. {
  54. var inputArgs = Console.ReadLine();
  55. if (inputArgs == "END")
  56. {
  57. return inputArgs;
  58. }
  59. var piece = inputArgs[0];
  60. var rowAndCow = inputArgs.Substring(1)
  61. .Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);
  62. var row = rowAndCow[0];
  63. var col = rowAndCow[1];
  64. var result = piece + "-" + row + "-" + col;
  65. return result;
  66. }
  67.  
  68. public static bool IsNotOnBoard(string[][] matrix, string piece, int row, int col)
  69. {
  70. if (matrix[row][col] == piece)
  71. {
  72. return false;
  73. }
  74. return true;
  75. }
  76.  
  77. public static bool IsMoveValid(string piece, int rowNow, int colNow, int rowToBeMoved, int colToBeMoved, string[][] matrix)
  78. {
  79. switch (piece)
  80. {
  81. case "K":
  82. if (Math.Abs(rowNow - rowToBeMoved) > 1 || Math.Abs(colNow - colToBeMoved) > 1)
  83. {
  84. return false;
  85. }
  86. return true;
  87. case "R":
  88. if (rowNow != rowToBeMoved && colNow != colToBeMoved)
  89. {
  90. return false;
  91. }
  92. return true;
  93. case "P":
  94. if (colNow == colToBeMoved && rowNow - rowToBeMoved == 1)
  95. {
  96. return true;
  97. }
  98. return false;
  99. }
  100. return true;
  101. }
  102. }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement