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; } } }