public void CalculateRuleTwo() { if (State == SeatPlacement.Floor) { return; } int occupied = 0; occupied += HasNeighbor(1, 0) ? 1 : 0; occupied += HasNeighbor(-1, 0) ? 1 : 0; occupied += HasNeighbor(0, 1) ? 1 : 0; occupied += HasNeighbor(0, -1) ? 1 : 0; occupied += HasNeighbor(-1, -1) ? 1 : 0; occupied += HasNeighbor(1, 1) ? 1 : 0; occupied += HasNeighbor(-1, 1) ? 1 : 0; occupied += HasNeighbor(1, -1) ? 1 : 0; if (State == SeatPlacement.Empty && occupied == 0) { IsSatisfied = false; nextState = SeatPlacement.Occupied; } if (State == SeatPlacement.Occupied && occupied >= 5) { IsSatisfied = false; nextState = SeatPlacement.Empty; } }
public Seat(char init, int posX, int posY, Seat[,] map) { this.posX = posX; this.posY = posY; this.map = map; State = init switch { 'L' => SeatPlacement.Empty, '#' => SeatPlacement.Occupied, _ => SeatPlacement.Floor }; nextState = State; }
public void CalculateRuleOne() { if (State == SeatPlacement.Floor) { return; } int occupied = GetOccupiedNeighbors(); if (State == SeatPlacement.Empty && occupied == 0) { IsSatisfied = false; nextState = SeatPlacement.Occupied; } if (State == SeatPlacement.Occupied && occupied >= 4) { IsSatisfied = false; nextState = SeatPlacement.Empty; } }