|
|
@@ -0,0 +1,86 @@
|
|
|
+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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|