Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class AirCraftCabinLoading:
- def __init__(self):
- self.aircraft=[]
- for i in range(10):
- self.aircraft.push({
- "unavailableSeatsRight":0,
- "unavailableSeatsLeft":0,
- "takenSeatsRight":0,
- "takenSeatsLeft":0,
- "passengerOrGroupIds":{}
- })
- def _place_passengers_in_row(self,row,numberOfPassengers,id):
- for i in range(numberOfPassengers):
- if (row["takenSeatsRight"]>row["takenSeatsLeft"]):
- row["takenSeatsLeft"]+=1
- else:
- row["takenSeatsRight"]+=1
- row["passengerOrGroupIds"][id]=numberOfPassengers
- def _remove_passengers_in_row(self,row,id):
- numberOfPassengers=row["passengerOrGroupIds"][id]
- for i in range(numberOfPassengers):
- if (row["takenSeatsRight"]>row["takenSeatsLeft"]):
- row["takenSeatsLeft"] -= 1
- else:
- row["takenSeatsRight"]-=1
- def place_passengers(self,numberOfPassengers,passenger_or_group_id):
- if (numberOfPassengers>4)
- raise Exception("No more than 4 passengers are allowed in a group");
- for i in [[5,4],[6,3],[7,2],[8,1],[9,0]]:
- first_row=self.aircraft[i[0]]
- second_row=self.aircraft[i[1]]
- seats_available_first_row=4-first_row["takenSeatsLeft"]-first_row["takenSeatsLeft"]-first_row["unavailableSeatsRight"]-first_row["unavailableSeatsLeft"]
- seats_available_second_row=4-second_row["takenSeatsLeft"]-second_row["takenSeatsLeft"]-second_row["unavailableSeatsRight"]-second_row["unavailableSeatsLeft"]
- if (numberOfPassengers<=seats_available_first_row and numberOfPassengers<=seats_available_second_row):
- if (seats_available_first_row<seats_available_second_row):
- self._place_passengers_in_row(first_row,numberOfPassengers,passenger_or_group_id)
- else:
- self._place_passengers_in_row(second_row,numberOfPassengers,passenger_or_group_id)
- elif (numberOfPassengers<=seats_available_first_row)
- self._place_passengers_in_row(first_row, numberOfPassengers, passenger_or_group_id)
- elif (numberOfPassengers<=seats_available_second_row):
- self._place_passengers_in_row(second_row, numberOfPassengers, passenger_or_group_id)
- def remove_passengers(self,passenger_or_group_id):
- for row in self.aircraft:
- if (row["passengerOrGroupIds"][passenger_or_group_id]):
- self._remove_passengers_in_row(row,passenger_or_group_id)
- def get_n_of_unavailable_seats(self):
- n=0
- for row in self.aircraft:
- n+=row["takenSeatsLeft"]+row["takenSeatsLeft"]+row["unavailableSeatsRight"]+row["unavailableSeatsLeft"]
- return n
- def get_n_of_avaiable_seats(self):
- return 40-self.get_n_of_unavailable_seats()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement