amphibia89

05. Blur Filter

Apr 18th, 2016
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.67 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Linq;
  4.  
  5. class Program
  6. {
  7.     static void Main(string[] args)
  8.     {
  9. #if DEBUG
  10.         Console.SetIn(new StreamReader("../../../input.txt"));
  11. #endif
  12.         int blurAmount = int.Parse(Console.ReadLine());
  13.  
  14.         int[] dimensions = Console.ReadLine()
  15.             .Split()
  16.             .Select(int.Parse)
  17.             .ToArray();
  18.  
  19.         long[,] pixelMatrix = ReadMatrix(dimensions);
  20.  
  21.         int[] target = Console.ReadLine()
  22.             .Split()
  23.             .Select(int.Parse)
  24.             .ToArray();
  25.  
  26.         BlurMatrix(blurAmount, dimensions, pixelMatrix, target);
  27.         PrintMatrix(pixelMatrix, dimensions);
  28.     }
  29.  
  30.     private static long[,] ReadMatrix(int[] dimensions)
  31.     {
  32.         var pixelMatrix = new long[dimensions[0], dimensions[1]];
  33.  
  34.         for (int row = 0; row < dimensions[0]; row++)
  35.         {
  36.             int[] values = Console.ReadLine()
  37.             .Split()
  38.             .Select(int.Parse)
  39.             .ToArray();
  40.  
  41.             for (int col = 0; col < dimensions[1]; col++)
  42.                 pixelMatrix[row, col] = values[col];
  43.         }
  44.  
  45.         return pixelMatrix;
  46.     }
  47.  
  48.     private static void PrintMatrix(long[,] pixelMatrix, int[] dimensions)
  49.     {
  50.         for (int row = 0; row < dimensions[0]; row++)
  51.         {
  52.             for (int col = 0; col < dimensions[1]; col++)
  53.                 Console.Write(pixelMatrix[row, col] + " ");
  54.             Console.WriteLine();
  55.         }
  56.     }
  57.  
  58.     private static void BlurMatrix(int blurAmount, int[] dimensions, long[,] pixelMatrix, int[] target)
  59.     {
  60.         int targetRow = target[0];
  61.         int targetCol = target[1];
  62.  
  63.         pixelMatrix[targetRow, targetCol] += blurAmount;
  64.  
  65.         if (targetRow + 1 < dimensions[0])
  66.             pixelMatrix[targetRow + 1, targetCol] += blurAmount;
  67.  
  68.         if (targetRow + 1 < dimensions[0] && targetCol + 1 < dimensions[1])
  69.             pixelMatrix[targetRow + 1, targetCol + 1] += blurAmount;
  70.  
  71.         if (targetRow + 1 < dimensions[0] && targetCol - 1 >= 0)
  72.             pixelMatrix[targetRow + 1, targetCol - 1] += blurAmount;
  73.  
  74.         if (targetCol + 1 < dimensions[1])
  75.             pixelMatrix[targetRow, targetCol + 1] += blurAmount;
  76.  
  77.         if (targetCol - 1 >= 0)
  78.             pixelMatrix[targetRow, targetCol - 1] += blurAmount;
  79.  
  80.         if (targetRow - 1 >= 0)
  81.             pixelMatrix[targetRow - 1, targetCol] += blurAmount;
  82.  
  83.         if (targetRow - 1 >= 0 && targetCol + 1 < dimensions[1])
  84.             pixelMatrix[targetRow - 1, targetCol + 1] += blurAmount;
  85.  
  86.         if (targetRow - 1 >= 0 && targetCol - 1 >= 0)
  87.             pixelMatrix[targetRow - 1, targetCol - 1] += blurAmount;
  88.     }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment