Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 25.02.2024
Сообщений: 4

Задача "Занято"

20.04.2024, 21:05. Показов 5011. Ответов 4

Студворк — интернет-сервис помощи студентам
Во внешней переменной 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.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.04.2024, 21:05
Ответы с готовыми решениями:

При сканировании пишет, что занято 63 Мбт, а windows выдает 188 Гбт занято
При сканировании пишет, что занято 63 Мбт, а windows выдает 188 Гбт занято. Что делать?

Занято всё ОЗУ
Здравствуйте, подскажите пожалуйста как узнать что жрёт всю оперативку ? evgeniy@deadsik:~$ top top - 09:34:55 up 31 min, 1 user, ...

Из 97 гигабайт свободно 4, но занято 70 (?)
В моем компьютере системный диск отображает занятое место так: 4,73 свободно из 97,5 ГБ. Захожу в этот диск выделяю все файлы(+ скрытые и...

4
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
21.04.2024, 09:54
Продублирую свой же код Напишите функцию sequence_occupied(), которая находит наибольшую последовательность заполненных мест в ряду
Python
1
2
3
4
5
6
7
8
9
10
11
def sequence_occupied(**kwargs) -> tuple[int, int]:
    places = globals()['places']  # надо бить линейкой по пальцам за такой api
    for i, lst in kwargs.items():
        i = int(i)
        for j in lst:
            places[i - 1][j - 1] = 1
    # places = [[1, 1, 0, 1], [0, 1, 1, 1], [0, 1, 1, 1, 0, 0]]
    for i in places:
        # цикл, определённо цикл. И поиск максимального в каж
        pass
    return 3, 2
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
21.04.2024, 12:44
Лучший ответ Сообщение было отмечено Тима27 как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def sequence_occupied(**data):
    max_len = 0
    i_of_max = None
    for i in range(len(places)):
        if str(i+1) in data:
            j_arr = data[str(i+1)]
            for j in j_arr:
                places[i][j-1] = 1
        cur_row = places[i]
        for j in range(len(cur_row)):
            if (not j or cur_row[j-1]==0) and cur_row[j]==1:
                L = j
            elif (j == len(cur_row)-1 or cur_row[j+1]==0) and cur_row[j]==1:
                R = j
                le = R-L+1
                if le > max_len:
                    max_len = le
                    i_of_max = i
    return max_len, i_of_max+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)
1
0 / 0 / 0
Регистрация: 25.02.2024
Сообщений: 4
21.04.2024, 17:42  [ТС]
эта программа не проходит второй тест.
Ввод:
places = [[0, 0, 0, 1, 1, 0], [0, 0, 0, 0, 0, 1], [0, 1, 0, 0, 1, 0], [0, 0, 1, 1, 1, 1], [0, 0, 0, 0, 0, 1], [0, 0, 1, 0, 1, 0], [0, 1, 1, 0, 0, 1]]
data = {'1': [1, 6, 3], '2': [2, 4], '7': [1, 5, 4], '6': [4, 2], '5': [4, 2], '3': [4, 6]}
print(sequence_occupied(**data))
print(places)

Ожидаемый результат вывода:
(6, 7)
[[1, 0, 1, 1, 1, 1], [0, 1, 0, 1, 0, 1], [0, 1, 0, 1, 1, 1], [0, 0, 1, 1, 1, 1], [0, 1, 0, 1, 0, 1], [0, 1, 1, 1, 1, 0], [1, 1, 1, 1, 1, 1]]

А на самом деле она выводит:
(3, 2)
[[1, 0, 1, 1, 1, 1], [0, 1, 0, 1, 0, 1], [0, 1, 0, 1, 1, 1], [0, 0, 1, 1, 1, 1], [0, 1, 0, 1, 0, 1], [0, 1, 1, 1, 1, 0], [1, 1, 1, 1, 1, 1]]

вот такие дела. Второй тест программа не проходит

Добавлено через 3 минуты
А вот Ваша программа справилась со вторым тестом, огромное-преогромное Вам спасибо!
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
21.04.2024, 20:26
Цитата Сообщение от Тима27 Посмотреть сообщение
Ожидаемый результат вывода:
(6, 7)
[[1, 0, 1, 1, 1, 1], [0, 1, 0, 1, 0, 1], [0, 1, 0, 1, 1, 1], [0, 0, 1, 1, 1, 1], [0, 1, 0, 1, 0, 1], [0, 1, 1, 1, 1, 0], [1, 1, 1, 1, 1, 1]]
А на самом деле она выводит:
(3, 2)
Не, я сейчас запустил - у меня (6, 7) выводит:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def sequence_occupied(**data):
    max_len = 0
    i_of_max = None
    for i in range(len(places)):
        if str(i + 1) in data:
            j_arr = data[str(i + 1)]
            for j in j_arr:
                places[i][j - 1] = 1
        cur_row = places[i]
        for j in range(len(cur_row)):
            if (not j or cur_row[j - 1] == 0) and cur_row[j] == 1:
                L = j
            elif (j == len(cur_row) - 1 or cur_row[j + 1] == 0) and cur_row[j] == 1:
                R = j
                le = R - L + 1
                if le > max_len:
                    max_len = le
                    i_of_max = i
    return max_len, i_of_max + 1
 
 
places = [[0, 0, 0, 1, 1, 0], [0, 0, 0, 0, 0, 1], [0, 1, 0, 0, 1, 0], [0, 0, 1, 1, 1, 1],
          [0, 0, 0, 0, 0, 1], [0, 0, 1, 0, 1, 0], [0, 1, 1, 0, 0, 1]]
data = {'1': [1, 6, 3], '2': [2, 4], '7': [1, 5, 4], '6': [4, 2], '5': [4, 2], '3': [4, 6]}
print(sequence_occupied(**data))
print(places)
# (6, 7)
# [[1, 0, 1, 1, 1, 1], [0, 1, 0, 1, 0, 1], [0, 1, 0, 1, 1, 1], [0, 0, 1, 1, 1, 1], 
# [0, 1, 0, 1, 0, 1], [0, 1, 1, 1, 1, 0], [1, 1, 1, 1, 1, 1]]
Цитата Сообщение от Тима27 Посмотреть сообщение
А вот Ваша программа справилась со вторым тестом, огромное-преогромное Вам спасибо!
Ну да, нормально работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.04.2024, 20:26
Помогаю со студенческими работами здесь

На диске 0б свободно и занято
подскажите пожалуйста, скачал с интернета фильм, хотел записать его на диск, засунул его в дисковод, и там нет пустого места и нет...

CreateProcess и курсор Занято
Всем привет! Пытаюсь запустить игру из своего приложения(типа лаунчера с параметрами) через CreateProcess, в окне игры курсор...

На диске показывает 8 Гб занято, а в свойствах 10 Гб
Добрый вечер! Подскажите такой вопросик. На одном харде только остатки какие-то от предыдущих Винд (папки, типа, Recycle bin, которые в...

Озу занято на 99,9% не понятно чем
в общем, мобильнику 2 года, дохрена важных файлов, так что хард ресет делать не хочется. Есть другие способы почистить озу? (занято хз...

Проверить, занято ли место на форме
Существуют ли способы проверки на свободное место на форме, то есть не занятое никакими элементами? Хочу динамически разместить TextBox...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru