Advertisement
Guest User

Untitled

a guest
Dec 8th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. public string A()
  2. {
  3. return Count(GetGrid(GetInput()));
  4. }
  5.  
  6. public string B()
  7. {
  8. Print(GetGrid(GetInput()));
  9. return null;
  10. }
  11.  
  12. public bool[,] GetGrid(string input)
  13. {
  14. var grid = new bool[6, 50];
  15.  
  16. foreach (Match m in Regex.Matches(GetInput(), @"(?'cmd'rect|rotate column|rotate row) (x=|y=)?(?'a'\d+)( by |x)(?'b'\d+)"))
  17. {
  18. int a = int.Parse(m.Groups["a"].Value), b = int.Parse(m.Groups["b"].Value);
  19.  
  20. switch (m.Groups["cmd"].Value)
  21. {
  22. case "rect":
  23. for (var x = 0; x < b; x++) for (var y = 0; y < a; y++) grid[x, y] = true;
  24. break;
  25. case "rotate column":
  26. for (var i = 0; i < b; i++)
  27. {
  28. var t = grid[grid.GetLength(0) - 1, a];
  29. for (var x = 0; x < grid.GetLength(0); Swap(ref grid[x++, a], ref t)) ;
  30. }
  31. break;
  32. case "rotate row":
  33. for (var i = 0; i < b; i++)
  34. {
  35. var t = grid[a, grid.GetLength(1) - 1];
  36. for (var y = 0; y < grid.GetLength(1); Swap(ref grid[a, y++], ref t)) ;
  37. }
  38. break;
  39. }
  40. }
  41.  
  42. return grid;
  43. }
  44.  
  45. public void Swap(ref bool a, ref bool b)
  46. {
  47. var c = a;
  48. a = b;
  49. b = c;
  50. }
  51.  
  52. public string Count(bool[,] grid)
  53. {
  54. var i = 0;
  55. for (var x = 0; x < grid.GetLength(0); x++) for (var y = 0; y < grid.GetLength(1); y++) if (grid[x, y]) i++;
  56.  
  57. return i.ToString();
  58. }
  59.  
  60. public void Print(bool[,] grid)
  61. {
  62. for (var x = 0; x < grid.GetLength(0); x++)
  63. {
  64. for (var y = 0; y < grid.GetLength(1); y++) Console.Write(grid[x, y] ? "#" : ".");
  65. Console.WriteLine();
  66. }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement