Example #1
0
        public void GetNeighborTest(int x, int y, params char[] expected)
        {
            var cell  = new Grid2d.Cell(new Position(x, y), 'c');
            var cells = grid.GetNeighbors(cell);

            var c = cells.Select(n => n.Character).ToArray();

            Assert.AreEqual(expected, c);
            Assert.AreEqual(expected.Length, cells.Count);
        }
Example #2
0
        private int DoFlashes()
        {
            var hasFlashed = new HashSet <Grid2d.Cell>();

            grid.ForEach(c => c.Value++);
            var flashers = grid.GetCells(c => c.Value > 9 && !hasFlashed.Contains(c));

            while (flashers.Any())
            {
                flashers.ForEach(c =>
                {
                    hasFlashed.Add(c);
                    grid.GetNeighbors(c).ForEach(n => n.Value++);
                });
                flashers = grid.GetCells(c => c.Value > 9 && !hasFlashed.Contains(c));
            }

            hasFlashed.ForEach(c => c.Value = 0);
            return(hasFlashed.Count);
        }
Example #3
0
 public override string SolvePart1() => grid
 .Where(c => grid.GetNeighbors(c).All(n => n.Value > c.Value))
 .Sum(c => c.Value + 1).ToString();