Example #1
0
 public bool IsEqual(SeatMap map2)
 {
     for (int row = 0; row < Rows(); row++)
     {
         for (int col = 0; col < Cols(); col++)
         {
             if (this[row][col] != map2[row][col])
             {
                 return(false);
             }
         }
     }
     return(true);
 }
Example #2
0
        public SeatMap Clone()
        {
            var copy = new SeatMap();

            foreach (var row in this)
            {
                var rowchars = new List <char>();
                foreach (var col in row)
                {
                    rowchars.Add(col);
                }
                copy.Add(rowchars);
            }

            return(copy);
        }
Example #3
0
        public static void Task1()
        {
            Console.WriteLine("AOC2020_Day11_Task1");

            var map = new SeatMap();

            map.Load();

            var map2 = map.Clone();

            while (true)
            {
                for (int row = 0; row < map2.Rows(); row++)
                {
                    for (int col = 0; col < map2.Cols(); col++)
                    {
                        if (!map.IsSeat(row, col))
                        {
                            continue;
                        }

                        if (!map.IsSeatOccupied(row, col) && map.OccupiedAdjacentSeats1(row, col) == 0)
                        {
                            map2[row][col] = '#';
                        }
                        else if (map.IsSeatOccupied(row, col) && map.OccupiedAdjacentSeats1(row, col) >= 4)
                        {
                            map2[row][col] = 'L';
                        }
                    }
                }

                if (map.IsEqual(map2))
                {
                    break;
                }

                map = map2.Clone();
            }

            Console.WriteLine("Occupied seats {0}", map.SumOccupiedSeats());
        }