Python

Питон на сириусе. Кинотеатр

Программа выдачи неверный ответ. Скорректируйте пожалуйста мой код или напишите свой. Главное, чтобы работал на Сириусе
Юрий Львов
Юрий Львов
91
Твоя идея правильная (хотя и не самая эффективная в реализации).
Ты всего лишь перепутал индекс, когда брал срез: h[i][j : j + k]

И на мой взгляд проще сделать так:
if sum(h[i][j : j + k]) == 0:
Тоже не самый эффективный вариант, но получше.
Костя Суворов
Костя Суворов
83 478
Лучший ответ
Общий принцип решения. Без ввода количества рядов и мест в них, так что ваш Сириус вряд ли примет. Ищем номер наименьшего по длине ряда в котором kk рядом стоящих свободных мест. И с учетом что в матрице ЕСТЬ kk таких мест, иначе будет не правильно, будет выдавать первый ряд. Обработку этого условия нужно дорабатывать
 m = [[0,1,1,1,1,1,0,0], 
[0,1,0,0,1,0,0,0,1],
[1,1,1,1,1,1,1,1,1],
[0,1,0,0,0,1],
[1,1,1,1,1]
]
kk = 3

def f(n):
global j, kk
k = kk
res = 0
for i in range(len(n) - k + 1):
if not sum(n[i:k]): res = j
k += 1
return res

cinema = []
for j in m:
cinema += [f(j)]
result = list(map(lambda x: len(x) if x != 0 else 0,cinema))
max_ = max(result)
for i in range(len(result)):
if result[i] < max_ and result[i]:
max_ = result[i]
print(kk,'находящихся рядом свободных места находятся в', result.index(max_) + 1, 'ряду. И у него наименьшая длина из всех вариантов')
3 находящихся рядом свободных места находятся в 4 ряду. И у него наименьшая длина из всех вариантов
??????? ?????????????
??????? ?????????????
70 526
??????? ????????????? Вот с учетом нет kk свободных мест ни в одном ряду
https://pastebin.com/CmytX9Wg