Advertisement
Guest User

Untitled

a guest
Jun 25th, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.75 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace King_and_Queen
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             int howm = int.Parse(Console.ReadLine());
  14.             string[] ans = new string[howm];
  15.             for(int iter = 0; iter != howm; iter++)
  16.             {
  17.                 string[] input = Console.ReadLine().Split();
  18.                 string king = input[0], queen = input[1];
  19.  
  20.                 char[,] board = new char[8, 8];
  21.                 for(int i = 0; i != 8; i++)
  22.                 {
  23.                     for(int j = 0; j != 8; j++)
  24.                     {
  25.                         board[i, j] = '0';
  26.                     }
  27.                 }
  28.  
  29.                 List<int> KingCords   = ReturnPosition(king);
  30.                 List<int> QueenCoords = ReturnPosition(queen);
  31.  
  32.                 int kingX = KingCords[0], kingY = KingCords[1];
  33.                 int queenX = QueenCoords[0], queenY = QueenCoords[1];
  34.  
  35.                 ans[iter] = isEndangered(board, kingX, kingY, queenX, queenY) ? "Y " : "N ";
  36.             }
  37.  
  38.  
  39.             foreach (var s in ans) Console.WriteLine(s + " ");
  40.             Console.ReadLine();
  41.         }
  42.  
  43.         static List<int> ReturnPosition(string s)
  44.         {
  45.             char c = s[0];
  46.  
  47.             int posX = 0;
  48.             int posY = (int.Parse(s[1].ToString())) - 1;
  49.  
  50.             switch(c)
  51.             {
  52.                 case 'a':
  53.                     posX = 0;
  54.                     break;
  55.                 case 'b':
  56.                     posX = 1;
  57.                     break;
  58.                 case 'c':
  59.                     posX = 2;
  60.                     break;
  61.                 case 'd':
  62.                     posX = 3;
  63.                     break;
  64.                 case 'e':
  65.                     posX = 4;
  66.                     break;
  67.                 case 'f':
  68.                     posX = 5;
  69.                     break;
  70.                 case 'g':
  71.                     posX = 6;
  72.                     break;
  73.                 case 'h':
  74.                     posX = 7;
  75.                     break;
  76.             }
  77.  
  78.             return new List<int>() { posX, posY };
  79.         }
  80.  
  81.  
  82.         //     | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7  (i)
  83.         //   --+---+---+---+---+---+---+---+---
  84.         //   0 |   | Q |   |   |   | Q |   |
  85.         //   --+---+---+---+---+---+---+---+---
  86.         //   1 |   |   | Q |   |   | Q |   |  
  87.         //   --+---+---+---+---+---+---+---+---
  88.         //   2 |   |   |   | Q |   | Q |   | Q
  89.         //   --+---+---+---+---+---+---+---+---
  90.         //   3 |   |   |   |   | Q | Q | Q |
  91.         //   --+---+---+---+---+---+---+---+---
  92.         //   4 |   | K | Q | Q | Q |+Q+| Q | Q
  93.         //   --+---+---+---+---+---+---+---+---
  94.         //   5 |   |   |   |   | Q | Q | Q |
  95.         //   --+---+---+---+---+---+---+---+---
  96.         //   6 |   |   |   | Q |   | Q |   | Q
  97.         //   --+---+---+---+---+---+---+---+---
  98.         //   7 |   |   | Q |   |   | Q |   |
  99.         //  (j)
  100.  
  101.  
  102.         static bool isEndangered(char[,] board, int kX, int kY, int qX, int qY)                                        
  103.         {
  104.             char[,] workingSet = board;
  105.  
  106.             workingSet[kX, kY] = 'K';       // insert king
  107.             workingSet[qX, qY] = 'Q';       // insert queen
  108.  
  109.             ///
  110.             ///   Possible queen moves: UP | DOWN | LEFT | RIGHT | UP-LEFT | UP-RIGHT | DOWN-LEFT | DOWN-RIGHT
  111.             ///
  112.  
  113.             // Queen moving up:
  114.             for(int i = qX, j = qY; (i != -1) && (i != 8) && (j != -1) && (j != 8); j--)
  115.             {
  116.                 if(board[i,j] == 'K')  //if met king, king is in danger
  117.                 {
  118.                     return true;
  119.                 }
  120.                 else
  121.                 {
  122.                     board[i, j] = 'Q';
  123.                 }
  124.             }
  125.  
  126.  
  127.             // Queen moving down:
  128.             for(int i = qX, j = qY; (i != -1) && (i != 8) && (j != -1) && (j != 8); j++)
  129.             {
  130.                 if (board[i, j] == 'K') //if met king, king is in danger
  131.                 {
  132.                     return true;
  133.                 }
  134.                 else
  135.                 {
  136.                     board[i, j] = 'Q';
  137.                 }
  138.             }
  139.  
  140.  
  141.             // Queen moving left:
  142.             for(int i = qX, j = qY; (i != -1) && (i != 8) && (j != -1) && (j != 8); i--)
  143.             {
  144.                 if (board[i, j] == 'K') //if met king, king is in danger
  145.                 {
  146.                     return true;
  147.                 }
  148.                 else
  149.                 {
  150.                     board[i, j] = 'Q';
  151.                 }
  152.             }
  153.  
  154.  
  155.             // Queen moving right:
  156.             for (int i = qX, j = qY; (i != -1) && (i != 8) && (j != -1) && (j != 8); i++)
  157.             {
  158.                 if (board[i, j] == 'K') //if met king, king is in danger
  159.                 {
  160.                     return true;
  161.                 }
  162.                 else
  163.                 {
  164.                     board[i, j] = 'Q';
  165.                 }
  166.             }
  167.  
  168.            
  169.             // Queen moving UP-LEFT:
  170.             for (int i = qX, j = qY; (i != -1) && (i != 8) && (j != -1) && (j != 8); i--, j--)
  171.             {
  172.                 if (board[i, j] == 'K') //if met king, king is in danger
  173.                 {
  174.                     return true;
  175.                 }
  176.                 else
  177.                 {
  178.                     board[i, j] = 'Q';
  179.                 }
  180.             }
  181.  
  182.  
  183.  
  184.             // Queen moving UP-RIGHT:
  185.             for (int i = qX, j = qY; (i != -1) && (i != 8) && (j != -1) && (j != 8); i++, j--)
  186.             {
  187.                 if (board[i, j] == 'K') //if met king, king is in danger
  188.                 {
  189.                     return true;
  190.                 }
  191.                 else
  192.                 {
  193.                     board[i, j] = 'Q';
  194.                 }
  195.             }
  196.  
  197.  
  198.             // Queen moving DOWN-RIGHT:
  199.             for (int i = qX, j = qY; (i != -1) && (i != 8) && (j != -1) && (j != 8); i++, j++)
  200.             {
  201.                 if (board[i, j] == 'K') //if met king, king is in danger
  202.                 {
  203.                     return true;
  204.                 }
  205.                 else
  206.                 {
  207.                     board[i, j] = 'Q';
  208.                 }
  209.             }
  210.  
  211.  
  212.             // Queen moving DOWN-LEFT:
  213.             for (int i = qX, j = qY; (i != -1) && (i != 8) && (j != -1) && (j != 8); i--, j++)
  214.             {
  215.                 if (board[i, j] == 'K') //if met king, king is in danger
  216.                 {
  217.                     return true;
  218.                 }
  219.                 else
  220.                 {
  221.                     board[i, j] = 'Q';
  222.                 }
  223.             }
  224.  
  225.             return false;
  226.         }
  227.     }
  228.  
  229. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement