コード例 #1
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);
        }