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 = '.'; for(int row = 0; row <= set.Max(d => d.Y); row++) { for(int column = 0; column <= set.Max(d => d.X); column++) { if (!set.Add(new(column, row))) { if (prev != '#') movedOver++; prev = '#'; continue; } if (movedOver % 2 == 1) { prev = '.'; total++; } } movedOver = 0; prev = '.'; } return total.ToString(); } public async Task GetSolutionPart2() { return string.Empty; } } }