Дополнен 2 месяца назад
# Пример использования:
places = [[1, 1, 0, 0], [0, 0, 0, 1], [0, 1, 1, 0, 0, 0]]
data = {'2': [3, 2], '1': [4], '3': [4]}
print(sequence_occupied(places, **data))
print(places)
Вывод: (3, 2)
[[1, 1, 0, 1], [0, 1, 1, 1], [0, 1, 1, 1, 0, 0]]
Еще несколько заявок на приобретение билетов уже получены, но еще не выполнены. Гарантируется, что заявки только на свободные места.
Напишите функцию sequence_occupied(), которая находит наибольшую последовательность заполненных мест в ряду.
Функция получает произвольное количество именованных аргументов: ключ – ряд, значение – список мест. Возвращает длину наибольшей последовательности единиц и номер ряда, в которой эта последовательность находится. Если таких несколько, то ближе к началу списка. Нумерация рядов и мест в ряду с 1.
В задаче нельзя использовать инструкцию global.
def sequence_occupied(places, **data):
max_sequence_length = 0
max_sequence_row = 0
for row, seats in data.items():
row_index = int(row) - 1
for seat in seats:
seat_index = seat - 1
sequence_length = 0
while seat_index + sequence_length < len(places[row_index]) and places[row_index][seat_index + sequence_length] == 0:
sequence_length += 1
if sequence_length > max_sequence_length:
max_sequence_length = sequence_length
max_sequence_row = row_index + 1
for row, seats in data.items():
row_index = int(row) - 1
for seat in seats:
seat_index = seat - 1
for i in range(max_sequence_length):
places[row_index][seat_index + i] = 1
return max_sequence_length, max_sequence_row