Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var input = await File.ReadAllLinesAsync("input.txt");
- var grid = new List<PaperRoll>();
- for (var row = 0; row < input.Length; row++)
- {
- for (var column = 0; column < input[row].Length; column++)
- {
- if (input[row][column] == '@')
- {
- grid.Add(new PaperRoll(row, column, []));
- }
- }
- }
- var part2 = 0;
- while (true)
- {
- for (int i = 0; i < grid.Count; i++)
- {
- var roll = grid[i];
- var adjacent = grid.Where(r =>
- Math.Abs(r.Row - roll.Row) <= 1 &&
- Math.Abs(r.Column - roll.Column) <= 1 &&
- r != roll).ToList();
- grid[i] = roll with { Adjacent = adjacent };
- }
- var pickableRolls = grid.Where(r => r.Adjacent.Count < 4).ToList();
- if (part2 == 0)
- {
- Console.WriteLine($"Part 1: {pickableRolls.Count}");
- }
- if (pickableRolls.Count == 0)
- {
- Console.WriteLine($"Part 2: {part2}");
- break;
- }
- part2 += pickableRolls.Count;
- grid = [.. grid.Except(pickableRolls)];
- }
- record PaperRoll(int Row, int Column, List<PaperRoll> Adjacent);
Advertisement
Add Comment
Please, Sign In to add comment