social1986

Untitled

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