enevlogiev

PlusRemove

May 28th, 2015
317
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4.  
  5. class PlusRemove
  6. {
  7.     static void Main()
  8.     {
  9.         var inputArray = new List<string>();
  10.         var mask = new List<bool[]>();
  11.         string input;
  12.         while ((input = Console.ReadLine()) != "END")
  13.         {
  14.             inputArray.Add(input);
  15.             mask.Add(new bool[input.Length]);
  16.         }
  17.    
  18.     //identify plus shapes in matrix
  19.         for (var row = 1; row < inputArray.Count - 1; row++)
  20.         {
  21.             for (var col = 1; col < inputArray[row].Length - 1; col++)
  22.             {
  23.                 if (col < inputArray[row - 1].Length &&
  24.                     col < inputArray[row + 1].Length &&
  25.                     IsPlusShape(row, col, inputArray))
  26.                 {
  27.                     mask[row][col] = true;
  28.                     mask[row][col - 1] = true;
  29.                     mask[row][col + 1] = true;
  30.                     mask[row - 1][col] = true;
  31.                     mask[row + 1][col] = true;
  32.                 }
  33.             }
  34.         }
  35.    
  36.     //print
  37.         for (var row = 0; row < inputArray.Count; row++)
  38.         {
  39.             for (var col = 0; col < inputArray[row].Length; col++)
  40.             {
  41.                 if (mask[row][col]) continue;
  42.                 Console.Write(inputArray[row][col]);
  43.             }
  44.             Console.WriteLine();
  45.         }        
  46.     }
  47.  
  48.     static bool IsPlusShape(int row, int col, List<string> arr)
  49.     {
  50.         var center = char.ToLower(arr[row][col]);
  51.         var left = char.ToLower(arr[row][col - 1]);
  52.         var right = char.ToLower(arr[row][col + 1]);
  53.         var upper = char.ToLower(arr[row - 1][col]);
  54.         var lower = char.ToLower(arr[row + 1][col]);
  55.  
  56.         var horizontalCheck = center == left && center == right;
  57.         var verticalCheck = center == upper && center == lower;
  58.  
  59.         return horizontalCheck && verticalCheck;
  60.     }
  61. }
RAW Paste Data