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