Beispiel #1
0
        private static int CalculateResult1(Position[,] input, int numberWhenPeopleLeave, Func <Position[, ], int, int, int> numberOfAdjacents)
        {
            Position[,] before = input.Clone() as Position[, ];
            Position[,] after  = input.Clone() as Position[, ];

            //Console.WriteLine("start");
            //PrintPosition(before);
            //Console.WriteLine();

            do
            {
                before = after.Clone() as Position[, ];
                after  = SimulateRound(before, numberWhenPeopleLeave, numberOfAdjacents);
                //Console.WriteLine("before");
                //PrintPosition(before);
                //Console.WriteLine("after");
                //PrintPosition(after);
                //Console.WriteLine();
            } while (!PositionsEqual(before, after));

            return(after.Cast <Position>().Count(p => p == Position.Occupied));
        }
Beispiel #2
0
 private static bool PositionsEqual(Position[,] p1, Position[,] p2) =>
 Enumerable.SequenceEqual(p1.Cast <Position>(), p2.Cast <Position>());