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); }
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); }
public override string SolvePart1() => grid .Where(c => grid.GetNeighbors(c).All(n => n.Value > c.Value)) .Sum(c => c.Value + 1).ToString();