Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public string A()
- {
- return Count(GetGrid(GetInput()));
- }
- public string B()
- {
- Print(GetGrid(GetInput()));
- return null;
- }
- public bool[,] GetGrid(string input)
- {
- var grid = new bool[6, 50];
- foreach (Match m in Regex.Matches(GetInput(), @"(?'cmd'rect|rotate column|rotate row) (x=|y=)?(?'a'\d+)( by |x)(?'b'\d+)"))
- {
- int a = int.Parse(m.Groups["a"].Value), b = int.Parse(m.Groups["b"].Value);
- switch (m.Groups["cmd"].Value)
- {
- case "rect":
- for (var x = 0; x < b; x++) for (var y = 0; y < a; y++) grid[x, y] = true;
- break;
- case "rotate column":
- for (var i = 0; i < b; i++)
- {
- var t = grid[grid.GetLength(0) - 1, a];
- for (var x = 0; x < grid.GetLength(0); Swap(ref grid[x++, a], ref t)) ;
- }
- break;
- case "rotate row":
- for (var i = 0; i < b; i++)
- {
- var t = grid[a, grid.GetLength(1) - 1];
- for (var y = 0; y < grid.GetLength(1); Swap(ref grid[a, y++], ref t)) ;
- }
- break;
- }
- }
- return grid;
- }
- public void Swap(ref bool a, ref bool b)
- {
- var c = a;
- a = b;
- b = c;
- }
- public string Count(bool[,] grid)
- {
- var i = 0;
- for (var x = 0; x < grid.GetLength(0); x++) for (var y = 0; y < grid.GetLength(1); y++) if (grid[x, y]) i++;
- return i.ToString();
- }
- public void Print(bool[,] grid)
- {
- for (var x = 0; x < grid.GetLength(0); x++)
- {
- for (var y = 0; y < grid.GetLength(1); y++) Console.Write(grid[x, y] ? "#" : ".");
- Console.WriteLine();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement