Пример #1
0
        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;
            }
        }
Пример #2
0
 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;
 }
Пример #3
0
        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;
            }
        }