using System; using System.IO; using System.Linq; namespace D18._1 { class Program { static void Main(string[] args) { string input = File.ReadAllText(args[0]).Trim(); Console.WriteLine($"Part 1 : There is {CountSafeTiles(input, 40)} safe tiles."); Console.WriteLine($"Part 2 : There is {CountSafeTiles(input, 400000)} safe tiles."); } private static int CountSafeTiles(string input, int rows) { var line = new bool[input.Length]; int safe = 0; for (var i = 0; i < input.Length; ++i) { line[i] = input[i] == '^' ? true : false; if (line[i] == false) safe++; } for (var r = 1; r < rows; ++r) { var nline = new bool[line.Length]; for (var i = 0; i < line.Length; ++i) { var left = i == 0 ? false : line[i - 1]; var center = line[i]; var right = i == line.Length - 1 ? false : line[i + 1]; if (left && center && right == false) nline[i] = true; else if (center && right && left == false) nline[i] = true; else if (left && center == false && right == false) nline[i] = true; else if (left == false && center == false && right) nline[i] = true; else safe++; } line = nline; } return safe; } } }