Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
 Аватар для Lokkie
7 / 7 / 0
Регистрация: 12.11.2009
Сообщений: 218

ЕГЭ 2016, задание №1 Тип заданий 27: разработка программы

31.10.2019, 15:35. Показов 3426. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго денька господа, начал для себя изучать питон по бесплатному онлайн курсу. Стали чота тяжко идти задачи, и тут в комментариях на курсе некий аноним оставил ссылку на похожий тест в курсе, только на задание из ЕГЭ 2016. Благополучно сохранил ссылку и забыл про неё. Сейчас заскучал, решил попробовать решить (пардон за тавтологию).
Сама задача выглядит так:
тык
Задание:
Специальная камера, установленная на перекрёстке, фиксирует количество проезжающих автомобилей, и каждую минуту по каналу связи передаёт неотрицательное целое число — количество автомобилей, проехавших перекрёсток за эту минуту. Известно, что за минуту перекрёсток может проехать не более 100 автомобилей. Необходимо найти в заданной серии показаний максимальное количество автомобилей, проехавших перекрёсток в течение пяти подряд идущих минут. Максимальное количество показаний, которое может передать камера, не превышает 1440.

Напишите на любом языке программирования программу для решения поставленной задачи. Для получения максимального результата программа должна быть эффективна по времени и по используемой памяти.

Входные данные представлены следующим образом. В первой строке задаётся число N – общее количество переданных показаний. Гарантируется, что N>5. В каждой из следующих N строк задаётся одно положительное целое число – очередное показание камеры.

Пример входных данных:
8
5
12
27
10
4
50
7
16

Программа выводит только одно число – наибольшее количество автомобилей, проехавших перекресток за пять подряд идущих минут.

Пример выходных данных для приведённого выше примера входных данных:
103


Решить вроде решил, значение в конечном итоге мне выдавало одно - максимальную скорость за 5 подряд идущих минут в списке из n чисел. Под конец я решил слегка "модернизировать" код (простите меня настоящие программисты за такие слова), пущай выдаёт текущую максимальную скорость сразу после того, как известны скорости в первые 5 минут и пока не введены все значения до конца, пусть также рисует максимально записанную скорость в течение 5 минут на данный момент.

К чему вся тема: подходит ли такой код для решения задачи в принципе? (минуя условие о выведении лишь одного числа)
Не слишком ли он громоздкий?
Достаточно ли корректно я выполнил условия задачи про "эффективность считывания\память"?
p.s., пока что я знаком лишь с малой частью функций и методов, к примеру те же map(), lambda, .join(), isdigit(), tuple() и тем более классы\объекты в курсе еще не были (а некоторых и не будет вовсе, придётся курить другие курсы и искать литературу), так что использовал только то, что знаю.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
n = int(input())
cnt = 0
speed = []
y = 0
while cnt < n:
    x = int(input())
    cnt += 1
    speed.append(x)
    if len(speed) == 5:
        print('Max speed in 5 min:', speed[0]+speed[1]+speed[2]+speed[3])
    if len(speed) > 5:
        if speed[0] + speed[1] + speed[2] + speed[3] + speed[4] > speed[1] + speed[2] + speed[3] + speed[4] + speed[5]:
            print('Max speed in 5 min:', speed[0] + speed[1] + speed[2] + speed[3] + speed[4])
        elif speed[0] + speed[1] + speed[2] + speed[3] + speed[4] < speed[1] + speed[2] + speed[3] + speed[4] + speed[5]:
            print('Max speed in 5 min:', speed[1] + speed[2] + speed[3] + speed[4] + speed[5])
            del speed[0]
    else:
        continue
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.10.2019, 15:35
Ответы с готовыми решениями:

Разработать приложение в среде VBA для генерации (проверки) заданий в формате ЕГЭ (14, 2016 г.)
Пример. Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w...

Разработать приложение в среде VBA для генерации (проверки) заданий в формате ЕГЭ (14, 2016 г.) и ответов к ним
Вот примерный вид

Арифметический корень (книга Мальцев Математика ЕГЭ минимум Подготовка к ЕГЭ 2016)
Помогите, может у кого есть решибник к книге Мальцев Математика ЕГЭ минимум Подготовка к ЕГЭ 2016. Если кому то не жалко времени, решите....

8
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
31.10.2019, 16:35
Лучший ответ Сообщение было отмечено Иван2103 как решение

Решение

Иван2103, Все намного проще:
Python
1
2
3
4
5
6
7
8
9
10
11
# -*- coding: utf-8 -*-
 
n = int(input())
collection = [int(input())  for _ in range(n)]
 
maximum = 0
for i in range(n - 4):
    current = sum(collection[i: i + 5])
    if current > maximum: maximum = current
 
print(maximum)
2
 Аватар для Lokkie
7 / 7 / 0
Регистрация: 12.11.2009
Сообщений: 218
31.10.2019, 18:48  [ТС]
DmFat, вот уж действительно, куда проще
Цитата Сообщение от DmFat Посмотреть сообщение
for _ in range(n)]
Вот только этого момента не пойму, видимо не было в курсе такого, что за "_" нижнее подчеркивание такое

И почему в 7 строке именно -4 ?

Только что заметил, что вместо кол-ва автомобилей, я почему-то думал, что считается скорость xD
а еще y = 0 забыл убрать
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
01.11.2019, 08:05
Иван2103,
1) Нижнее подчеркивание это для того что ты не используешь данную переменную, с таким же успехом ты можешь вставить туда "i".

2) -4 т.к. мы берем срез чисел от i до i + 5, поэтому когда мы доходим до последних 5 чисел, то останавливаем цикл, иначе при следующей итерации мы получим ошибку IndexError, т.к. срез от i позиции до конца списка будет содержать только 4 числа.
0
 Аватар для Lokkie
7 / 7 / 0
Регистрация: 12.11.2009
Сообщений: 218
01.11.2019, 08:14  [ТС]
DmFat, аааа, тогда всё понял, благодарю. Просто в курсе для таких случаев использовались любые переменные, но не символы, поэтому я и подумал, что это какая-то иная конструкция
Спасибо за разъяснения!
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
01.11.2019, 12:33
Лучший ответ Сообщение было отмечено Иван2103 как решение

Решение

А теперь следите за руками:
Python
1
maximum = max(sum(collection[i: i + 5]) for i in range(n - 4))
Но это уж совсем магия

Добавлено через 2 минуты
Кстати, чем хорошо решение от DmFat:
1) ввод внесен в начало и отделён от остального кода.
2) аналогично с выводом.

По сути любая задача состоит из трёх таких блоков: ввод-расчёт-вывод.

Добавлено через 2 минуты
Если не знакомы со срезами, то можно написать в более привычном виде:
Python
1
current = sum(collection[i], collection[i+1], collection[i+2], collection[i+3], collection[i+4])
3
 Аватар для Lokkie
7 / 7 / 0
Регистрация: 12.11.2009
Сообщений: 218
01.11.2019, 13:18  [ТС]
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
А теперь следите за руками:
Python
1
maximum = max(sum(collection[i: i + 5]) for i in range(n - 4))
Это ж шо такое, вычисления в одну строчку вообще?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
01.11.2019, 13:37
Лучший ответ Сообщение было отмечено Иван2103 как решение

Решение

Ага. Обычно не стоит так писать, потому что при любом малейшем изменении всё придётся переписывать.

Эквивалентно:
Python
1
2
3
4
ls = []
for i in range(n - 4):
    ls.append(sum(collection[i: i + 5]))
maximum = max(ls)
1
 Аватар для Lokkie
7 / 7 / 0
Регистрация: 12.11.2009
Сообщений: 218
01.11.2019, 14:08  [ТС]
Рыжий Лис, понял принял. Спасибо за новые знания
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.11.2019, 14:08
Помогаю со студенческими работами здесь

Генерация заданий ЕГЭ
Подскажите,почему при вводе любого ответа он выдает результат &quot;Неверно&quot;??

Видеоразборы заданий по информатике из ЕГЭ
Делаю видеоразборы заданий ЕГЭ по информатике, хочу представить Вашему вниманию, жду комментариев и критики :) ...

Разработка программы «Табулирование функции», использующей процедурный тип данных
Для этого составить проект для решения уравнений по коэффициентам, вводимым с клавиатуры (вводить начальное и конечное значение Х, и шаг...

Разработать приложение в среде VBA для генерации (проверки) заданий в формате ЕГЭ (12, 2017 г.)
Разработать приложение в среде VBA для генерации (проверки) заданий в формате ЕГЭ (12, 2017 г.). Пример. В терминологии сетей TCP/IP...

2 задание ЕГЭ
В чем проблема?в чем я наложал в логике? print(&quot;X\tY\tW\tZ\tF&quot;) for x in range(2): for y in range(2): for w in...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru