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); }
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); }
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()); }