Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Занято задача Python

Люди добрые, кто учится в Яндекс лицее или умеет программировать на Python помогите решить задачу или подскажите как можно её решить буду очень благодарен
Во внешней переменной places находится список списков – схема зала, в которой единицами обозначены проданные места, а нулями свободные.
Еще несколько заявок на приобретение билетов уже получены, но еще не выполнены. Гарантируется, что заявки только на свободные места.
Напишите функцию sequence_occupied(), которая находит наибольшую последовательность заполненных мест в ряду.
Функция получает произвольное количество именованных аргументов: ключ – ряд, значение – список мест. Возвращает длину наибольшей последовательности единиц и номер ряда, в которой эта последовательность находится. Если таких несколько, то ближе к началу списка. Нумерация рядов и мест в ряду с 1.

Пример
Ввод Вывод
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(**data))
print(places)
(3, 2)
[[1, 1, 0, 1], [0, 1, 1, 1], [0, 1, 1, 1, 0, 0]]
Примечания
В задаче нельзя использовать инструкцию 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 # Adjusting row index to match Python's zero-based indexing
for seat in seats:
seat_index = seat - 1 # Adjusting seat index to match Python's zero-based indexing
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 # Re-adjusting row index to match one-based indexing

# Update places according to data
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

# Пример использования:
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)

Аватар пользователя
Профи

def sequence_occupied(**data):
max_length = 0
row_number = None

for row, seats in data.items():
current_length = 0
for seat in seats:
if seat == 1:
current_length += 1
if current_length > max_length:
max_length = current_length
row_number = int(row)
else:
current_length = 0

return max_length, row_number

# Пример использования функции
places = [[1, 1, 0, 0], [0, 0, 0, 1], [0, 1, 1, 0, 0, 0]]
data = {'2': [3, 2], '1': [4], '3': [4]}
result = sequence_occupied(**data)
print(result)

# Обновление переменной places в соответствии с возвращенными значениями
if result[1] is not None:
row_index = result[1] - 1 # преобразуем номер ряда к индексу в списке places
for i in range(result[0]):
places[row_index][i] = 1

print(places)

я не лицеист а обычный 9 классник