1+
12def new_seating_chart (size = 22 ):
2- seats = dict ()
3- for number in range (1 , size + 1 ):
4- seats [number ] = None
5- return seats
3+ '''
4+
5+ :param size: int - number if seats in the seating chart.
6+ :return: dict - with number of seats specified, and placeholder values.
7+ '''
8+
9+ return {number : None for number in range (1 , size + 1 ) }
10+
611
712def arrange_reservations (guests = None ):
8- if guests is None :
9- return new_seating_chart ()
10- else :
11- seats = new_seating_chart ()
13+ '''
14+
15+ :param guest_list: list - list of guest names for reservations.
16+ :return: dict - Default sized dictionary with guests assigned seats,
17+ and placeholders for empty seats.
18+ '''
19+
20+ seats = new_seating_chart ()
21+
22+ if guests :
1223 for seat_number in range (1 , len (guests )):
1324 seats [seat_number ] = guests [seat_number ]
1425 return seats
1526
27+
1628def find_all_available_seats (seats ):
29+ '''
30+
31+ :param seats: dict - seating chart.
32+ :return: list - list of seat numbers available for reserving..
33+ '''
34+
1735 available = []
1836 for seat_num , value in seats .items ():
1937 if value is None :
2038 available .append (seat_num )
2139 return available
2240
41+
2342def curr_empty_seat_capacity (seats ):
43+ '''
44+
45+ :param seats: dict - dictionary of reserved seats.
46+ :return: int - number of seats empty.
47+ '''
48+
2449 count = 0
2550 for value in seats .values ():
2651 if value is None :
2752 count += 1
2853 return count
2954
55+
3056def accommodate_waiting_guests (seats , guests ):
57+ '''
58+
59+ :param seats: dict - seating chart dictionary.
60+ :param guests: list - walk-in guests
61+ :return: dict - updated seating chart with available spaces filled.
62+ '''
63+
3164 curr_empty_seats = curr_empty_seat_capacity (seats )
3265 empty_seat_list = find_all_available_seats (seats )
66+
3367 if len (guests ) > curr_empty_seats :
3468 return False
3569 else :
36- for index in range ( len ( guests ) ):
70+ for index , item in enumerate ( guests ):
3771 seats [empty_seat_list [index ]] = guests [index ]
72+
3873 return seats
3974
75+
4076def empty_seats (seats , seat_numbers ):
41- for seat in seat_numbers :
42- seats [seat ] = None
43- return seats
77+ '''
78+
79+ :param seats: dict - seating chart dictionary.
80+ :param seat_numbers: list - list of seat numbers to free up or empty.
81+ :return: updated seating chart dictionary.
82+ '''
83+
84+ for seat in seat_numbers :
85+ seats [seat ] = None
86+
87+ return seats
0 commit comments