Advertisement
butoff

Knight_Game

Feb 6th, 2018
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.16 KB | None | 0 0
  1. using System;
  2.  
  3. namespace task2
  4. {
  5.     class Program
  6.     {
  7.         static void Main()
  8.         {
  9.             int counter = 0;
  10.             int n = 2;
  11.             n = int.Parse(Console.ReadLine());
  12.             char[,] board = new char[n,n];
  13.             if (n <= 2)
  14.             {
  15.                 Console.WriteLine(0);
  16.                 Environment.Exit(0);
  17.             }
  18.             //---------------------------------------populate the board
  19.             for (int r = 0; r < n; r++)
  20.             {
  21.                 string input = Console.ReadLine();
  22.                 for (int c = 0; c < n; c++)
  23.                 {
  24.                     board[r, c] = input[c];
  25.                 }
  26.             }
  27.            
  28.             int[,] targets = new int[n,n];            
  29.            
  30.             Func<int, int, bool> check = (row, col) =>
  31.             {
  32.                 if (row < 0 || row >= n || col < 0 || col >= n || board[row,col] == '0')
  33.                 {
  34.                     return false;
  35.                 }
  36.                 return true;
  37.             };    
  38.             Func<int, int, int> calcTargets = (r, c) =>
  39.             {
  40.                 int tar = 0;
  41.                 if (check(r - 2, c - 1)) { tar++; }
  42.                 if (check(r - 2, c + 1)) { tar++; }
  43.                 if (check(r - 1, c - 2)) { tar++; }
  44.                 if (check(r - 1, c + 2)) { tar++; }
  45.                 if (check(r + 1, c - 2)) { tar++; }
  46.                 if (check(r + 1, c + 2)) { tar++; }
  47.                 if (check(r + 2, c - 1)) { tar++; }
  48.                 if (check(r + 2, c + 1)) { tar++; }
  49.                 return tar;
  50.             };
  51.             int maxTargets = 0;
  52.             do
  53.             {
  54.                 maxTargets = 0;
  55.                 for (int r = 0; r < n; r++)
  56.                 {
  57.                     for (int c = 0; c < n; c++)
  58.                     {
  59.                         if (board[r, c] == 'K')
  60.                         {
  61.                             int t = calcTargets(r, c);
  62.                             targets[r, c] = t;
  63.                             if(maxTargets < t)
  64.                             {
  65.                                 maxTargets = t;
  66.                             }
  67.                         }
  68.                     }
  69.                 }    
  70.                 //-----------------------------------------------------------check for max and remove it
  71.                 if (maxTargets == 0)
  72.                 {
  73.                     break;
  74.                 }
  75.                 for (int r = 0; r < n; r++)
  76.                 {
  77.                     bool removed = false;
  78.                     for (int c = 0; c < n; c++)
  79.                     {
  80.                         if (targets[r,c] == maxTargets)
  81.                         {
  82.                             board[r, c] = '0';
  83.                             targets[r, c] = 0;
  84.                             counter++;
  85.                             removed = true;
  86.                             break;
  87.                         }
  88.                     }
  89.                     if (removed)
  90.                     {
  91.                         break;
  92.                     }
  93.                 }                
  94.  
  95.             } while (maxTargets != 0);
  96.            
  97.             Console.WriteLine(counter);
  98.         }
  99.         //-------------------------------------------------------------------
  100.         //private static void PrintTargets(int[,] board)
  101.         //{
  102.         //    Console.WriteLine("--target--");
  103.         //    for (int r = 0; r < board.GetLength(0); r++)
  104.         //    {
  105.         //        for (int c = 0; c < board.GetLength(1); c++)
  106.         //        {
  107.         //            Console.Write(board[r, c]);
  108.         //        }
  109.         //        Console.WriteLine();
  110.         //    }
  111.         //    Console.WriteLine();
  112.         //}
  113.  
  114.         //private static void PrintBoard(char[,] board)
  115.         //{
  116.         //    Console.WriteLine("--board--");
  117.         //    for (int r = 0; r < board.GetLength(0); r++)
  118.         //    {
  119.         //        for (int c = 0; c < board.GetLength(1); c++)
  120.         //        {
  121.         //            Console.Write(board[r, c]);
  122.         //        }
  123.         //        Console.WriteLine();
  124.         //    }
  125.         //}
  126.     }
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement