Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace _07KnightGame
- {
- using System;
- public class StartUp
- {
- public static void Main(string[] args)
- {
- var boardSide = int.Parse(Console.ReadLine());
- var board = new char[boardSide, boardSide];
- FillMatrix(board);
- var removedKnights = 0;
- while (true)
- {
- var isSafe = true;
- var mostKInRange = 0;
- var knightPosition = new int[2];
- for (int r = 0; r < board.GetLength(0); r++)
- {
- for (int c = 0; c < board.GetLength(1); c++)
- {
- var currentPosition = board[r, c];
- if (currentPosition == 'K')
- {
- var KInRange = KnightsHit(board, r, c);
- if (KInRange > mostKInRange)
- {
- mostKInRange = KInRange;
- knightPosition[0] = r;
- knightPosition[1] = c;
- }
- if (KInRange > 0)
- {
- isSafe = false;
- }
- }
- }
- }
- if (!isSafe)
- {
- board[knightPosition[0], knightPosition[1]] = '0';
- removedKnights++;
- }
- else
- {
- break;
- }
- }
- Console.WriteLine(removedKnights);
- }
- private static void FillMatrix(char[,] board)
- {
- for (int r = 0; r < board.GetLength(0); r++)
- {
- var values = Console.ReadLine();
- for (int c = 0; c < board.GetLength(1); c++)
- {
- board[r, c] = values[c];
- }
- }
- }
- private static int KnightsHit(char[,] board, int r, int c)
- {
- var knightMoves = new int[8][]
- {
- new int[] { -2 + r, -1 + c},
- new int[] { -1 + r, -2 + c},
- new int[] { -2 + r, 1 + c},
- new int[] { -1 + r, 2 + c},
- new int[] { 1 + r, -2 + c},
- new int[] { 2 + r, -1 + c},
- new int[] { 1 + r, 2 + c},
- new int[] { 2 + r, 1 + c},
- };
- var counter = 0;
- for (int i = 0; i < knightMoves.Length; i++)
- {
- var row = knightMoves[i][0];
- var col = knightMoves[i][1];
- if (IsHit(board, row, col))
- {
- counter++;
- }
- }
- return counter;
- }
- private static bool IsHit(char[,] board, int row, int col)
- {
- bool isValidPosition = row >= 0
- && row < board.GetLength(0)
- && col >= 0
- && col < board.GetLength(1);
- return isValidPosition && board[row, col] == 'K';
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement