| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- using System;
- using System.IO;
- using System.Linq;
- namespace D08._1
- {
- class Program
- {
- static readonly int W = 50, H = 6;
- static bool[,] LCD = new bool[H, W];
- static void DrawRect(int w, int h)
- {
- for (var i = 0; i < h; i++)
- for (var j = 0; j < w; j++)
- LCD[i, j] = true;
- }
- static void RotateRow(int r, int d)
- {
- var row = new bool[W];
- for (var i = d; i < W + d; i++) row[i % W] = LCD[r, i - d];
- for (var i = 0; i < W; i++) LCD[r, i] = row[i];
- }
- static void RotateColumn(int c, int d)
- {
- var col = new bool[H];
- for (var i = d; i < H + d; i++) col[i % H] = LCD[i - d, c];
- for (var i = 0; i < H; i++) LCD[i, c] = col[i];
- }
- static void Main(string[] args)
- {
- if (args.Length < 1) throw new ArgumentException();
- if (File.Exists(args[0]) == false) throw new FileNotFoundException();
- using (var file = File.OpenText(args[0]))
- {
- while (true)
- {
- var line = file.ReadLine();
- if (line == null) break;
- if (line.StartsWith("rect "))
- {
- var lr = line.Split(" ")[1].Split("x");
- DrawRect(int.Parse(lr[0]), int.Parse(lr[1]));
- }
- if (line.StartsWith("rotate "))
- {
- var words = line.Split(" ");
- var type = words[1];
- var rc = words[2].Split("=")[1];
- var d = words[4];
- if (type == "row") RotateRow(int.Parse(rc), int.Parse(d));
- if (type == "column") RotateColumn(int.Parse(rc), int.Parse(d));
- }
- }
- }
- int answer = Print();
- Console.WriteLine($"The answer is : {answer}");
- }
- private static int Print()
- {
- int answer = 0;
- for (var i = 0; i < H; i++)
- {
- for (var j = 0; j < W; j++)
- {
- if (LCD[i, j]) answer++;
- Console.Write(LCD[i, j] ? '#' : '.');
- }
- Console.WriteLine();
- }
- Console.WriteLine();
- return answer;
- }
- }
- }
|