Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace King_and_Queen
- {
- class Program
- {
- static void Main(string[] args)
- {
- int howm = int.Parse(Console.ReadLine());
- string[] ans = new string[howm];
- for(int iter = 0; iter != howm; iter++)
- {
- string[] input = Console.ReadLine().Split();
- string king = input[0], queen = input[1];
- char[,] board = new char[8, 8];
- for(int i = 0; i != 8; i++)
- {
- for(int j = 0; j != 8; j++)
- {
- board[i, j] = '0';
- }
- }
- List<int> KingCords = ReturnPosition(king);
- List<int> QueenCoords = ReturnPosition(queen);
- int kingX = KingCords[0], kingY = KingCords[1];
- int queenX = QueenCoords[0], queenY = QueenCoords[1];
- ans[iter] = isEndangered(board, kingX, kingY, queenX, queenY) ? "Y " : "N ";
- }
- foreach (var s in ans) Console.WriteLine(s + " ");
- Console.ReadLine();
- }
- static List<int> ReturnPosition(string s)
- {
- char c = s[0];
- int posX = 0;
- int posY = (int.Parse(s[1].ToString())) - 1;
- switch(c)
- {
- case 'a':
- posX = 0;
- break;
- case 'b':
- posX = 1;
- break;
- case 'c':
- posX = 2;
- break;
- case 'd':
- posX = 3;
- break;
- case 'e':
- posX = 4;
- break;
- case 'f':
- posX = 5;
- break;
- case 'g':
- posX = 6;
- break;
- case 'h':
- posX = 7;
- break;
- }
- return new List<int>() { posX, posY };
- }
- // | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 (i)
- // --+---+---+---+---+---+---+---+---
- // 0 | | Q | | | | Q | |
- // --+---+---+---+---+---+---+---+---
- // 1 | | | Q | | | Q | |
- // --+---+---+---+---+---+---+---+---
- // 2 | | | | Q | | Q | | Q
- // --+---+---+---+---+---+---+---+---
- // 3 | | | | | Q | Q | Q |
- // --+---+---+---+---+---+---+---+---
- // 4 | | K | Q | Q | Q |+Q+| Q | Q
- // --+---+---+---+---+---+---+---+---
- // 5 | | | | | Q | Q | Q |
- // --+---+---+---+---+---+---+---+---
- // 6 | | | | Q | | Q | | Q
- // --+---+---+---+---+---+---+---+---
- // 7 | | | Q | | | Q | |
- // (j)
- static bool isEndangered(char[,] board, int kX, int kY, int qX, int qY)
- {
- char[,] workingSet = board;
- workingSet[kX, kY] = 'K'; // insert king
- workingSet[qX, qY] = 'Q'; // insert queen
- ///
- /// Possible queen moves: UP | DOWN | LEFT | RIGHT | UP-LEFT | UP-RIGHT | DOWN-LEFT | DOWN-RIGHT
- ///
- // Queen moving up:
- for(int i = qX, j = qY; (i != -1) && (i != 8) && (j != -1) && (j != 8); j--)
- {
- if(board[i,j] == 'K') //if met king, king is in danger
- {
- return true;
- }
- else
- {
- board[i, j] = 'Q';
- }
- }
- // Queen moving down:
- for(int i = qX, j = qY; (i != -1) && (i != 8) && (j != -1) && (j != 8); j++)
- {
- if (board[i, j] == 'K') //if met king, king is in danger
- {
- return true;
- }
- else
- {
- board[i, j] = 'Q';
- }
- }
- // Queen moving left:
- for(int i = qX, j = qY; (i != -1) && (i != 8) && (j != -1) && (j != 8); i--)
- {
- if (board[i, j] == 'K') //if met king, king is in danger
- {
- return true;
- }
- else
- {
- board[i, j] = 'Q';
- }
- }
- // Queen moving right:
- for (int i = qX, j = qY; (i != -1) && (i != 8) && (j != -1) && (j != 8); i++)
- {
- if (board[i, j] == 'K') //if met king, king is in danger
- {
- return true;
- }
- else
- {
- board[i, j] = 'Q';
- }
- }
- // Queen moving UP-LEFT:
- for (int i = qX, j = qY; (i != -1) && (i != 8) && (j != -1) && (j != 8); i--, j--)
- {
- if (board[i, j] == 'K') //if met king, king is in danger
- {
- return true;
- }
- else
- {
- board[i, j] = 'Q';
- }
- }
- // Queen moving UP-RIGHT:
- for (int i = qX, j = qY; (i != -1) && (i != 8) && (j != -1) && (j != 8); i++, j--)
- {
- if (board[i, j] == 'K') //if met king, king is in danger
- {
- return true;
- }
- else
- {
- board[i, j] = 'Q';
- }
- }
- // Queen moving DOWN-RIGHT:
- for (int i = qX, j = qY; (i != -1) && (i != 8) && (j != -1) && (j != 8); i++, j++)
- {
- if (board[i, j] == 'K') //if met king, king is in danger
- {
- return true;
- }
- else
- {
- board[i, j] = 'Q';
- }
- }
- // Queen moving DOWN-LEFT:
- for (int i = qX, j = qY; (i != -1) && (i != 8) && (j != -1) && (j != 8); i--, j++)
- {
- if (board[i, j] == 'K') //if met king, king is in danger
- {
- return true;
- }
- else
- {
- board[i, j] = 'Q';
- }
- }
- return false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement