public override int Puzzle1Solution() { var seats = new SeatBlock(Data.Get()); if (debug) { Console.WriteLine("InitialState:"); Console.WriteLine(seats); Console.WriteLine(); } int i = 1; while (!seats.InSteadyState()) { seats.AdvanceSimulation(); if (debug) { Console.WriteLine(string.Format("Iteration {0}:", i)); Console.WriteLine(seats); Console.WriteLine(); } i++; } Console.WriteLine("Final state:"); Console.WriteLine(seats); return(seats.Seats.Count(s => s.Occupied)); }
public Seat(SeatBlock parent, Coordinates location, char s, int overcrowdingThreshold) { SeatLabel = s; OvercrowdingThreshold = overcrowdingThreshold; Parent = parent; Location = location; switch (s) { case NullChar: IsNull = true; Occupied = false; break; case AvailableChar: Occupied = false; IsNull = false; break; case OccupiedChar: Occupied = true; IsNull = false; break; } }