Advertisement
enevlogiev

BitsAtCrossroads

Apr 29th, 2015
369
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.93 KB | None | 0 0
  1. class BitsAtCrossroads
  2. {
  3.     static void Main()
  4.     {
  5.         int size = int.Parse(Console.ReadLine());
  6.         int[,] matrix = new int[size, size];
  7.  
  8.         string input = Console.ReadLine();
  9.         int numberOfCrossroads = 0;
  10.  
  11.         while (input != "end")
  12.         {
  13.             string[] tokens = input.Split();
  14.             int row = int.Parse(tokens[0]);
  15.             int col = size - int.Parse(tokens[1]) - 1;
  16.             matrix[row, col] = 1;
  17.             numberOfCrossroads++;
  18.             numberOfCrossroads += findCrossroads(matrix, row, col, -1, -1);
  19.             numberOfCrossroads += findCrossroads(matrix, row, col, -1, +1);
  20.             numberOfCrossroads += findCrossroads(matrix, row, col, +1, +1);
  21.             numberOfCrossroads += findCrossroads(matrix, row, col, +1, -1);            
  22.             input = Console.ReadLine();
  23.         }
  24.         for (int i = 0; i < matrix.GetLength(0); i++)
  25.         {
  26.             Console.WriteLine(GetNumber(matrix, i));
  27.         }
  28.         Console.WriteLine(numberOfCrossroads);
  29.     }
  30.  
  31.     static int findCrossroads(int[,] board, int row, int col, int directionY, int directionX)
  32.     {
  33.         int intersections = 0;
  34.         int len = board.GetLength(0);
  35.         while (true)
  36.         {
  37.             row += directionY;
  38.             col += directionX;
  39.             if (row < 0 || row >= len || col < 0 || col >= len)
  40.             {
  41.                 return intersections;
  42.             }
  43.  
  44.             if (board[row, col] == 0)
  45.             {
  46.                 board[row, col] = 1;
  47.             }
  48.             else
  49.             {
  50.                 intersections++;
  51.             }
  52.         }
  53.     }
  54.  
  55.     static uint GetNumber(int[,] board, int row)
  56.     {
  57.         string numAsString = "";
  58.         for (int i = 0; i < board.GetLength(1); i++)
  59.         {
  60.             numAsString += board[row, i];
  61.         }
  62.         uint num = Convert.ToUInt32(numAsString, 2);
  63.         return num;
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement