namespace AdventOfCode.Solutions._2023 { public class Day18(InputReader reader) : IChallange { private InputReader _inputReader = reader; public async Task GetSolutionPart1() { Point digger = new (0, 0); ISet set = new HashSet() { digger }; await foreach(string instructions in _inputReader.ReadAsStringLine()) { string[] todo = instructions.Split(' '); int length = int.Parse(todo[1]); for(int i = 0; i < length; i++) { switch(todo[0]) { case "U": digger = digger.MoveUp(); break; case "D": digger = digger.MoveDown(); break; case "L": digger = digger.MoveLeft(); break; case "R": digger = digger.MoveRight(); break; } set.Add(digger); } } int total = set.Count; int movedOver = 0; char prev = '.'; //Console for(long row = set.Min(d => d.Y); row <= set.Max(d => d.Y); row++) { for(long column = set.Min(d => d.X); column <= set.Max(d => d.X); column++) { if (!set.Add(new(column, row))) { //Console.Write('#'); if (prev != '#') movedOver++; prev = '#'; continue; } //Console.Write('.'); if (movedOver % 2 == 1) { prev = '.'; total++; } } //Console.WriteLine(); movedOver = 0; prev = '.'; } return total.ToString(); } public async Task GetSolutionPart2() { return string.Empty; } } }