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

Задача: "Холмы"

15.11.2023, 16:54. Показов 7509. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Холмы
Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
То в гору, то с горы, то вверх, то вниз! Посчитайте, сколько было холмов по пути, то есть сколько раз число оказывалось больше соседних.

Формат ввода
Вводятся целые числа (не меньше двух), пока не будет введено число -1.

Формат вывода
Выведите количество чисел, больших того, что перед ним, и того, что после него. Первое и последнее не могут быть холмами, у них нет одного соседа.

Пример 1
Ввод Вывод
1
3
1
5
-1
1
Пример 2
Ввод Вывод
1
2
-1
0
Примечания
-1 не участвует в рассмотрении, служит признаком окончания ввода.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.11.2023, 16:54
Ответы с готовыми решениями:

Долины и холмы
Рассмотрим числовую последовательность a1, ..., aN. Мы будем называть подстроку ai, …, aj, ..., ak (1 ≤ i < j < k ≤ N) исходной...

Решение задачи: "Долины и Холмы"
Вот такое условие: Рассмотрим числовую последовательность a1, ..., aN. Мы будем называть подстроку ai, …, aj, ..., ak (1 ≤ i < j...

Олимпиадная задача по программированию. PascalABC.NET. Задача L. Переключение между окнами
Когда пользователь работает в операционной системе Winux, у него часто запущено несколько приложений. Каждое из приложений работает в...

16
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.11.2023, 17:06
Python
1
2
3
4
5
lst = []
while (i := int(input())) != -1:
    lst.append(i)
 
print(sum(1 for i, e in enumerate(lst[1:-1], 1) if lst[i - 1] < e > lst[i + 1]))
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
15.11.2023, 20:27
Python
1
2
3
4
5
6
7
8
9
arr = [None] * 3
counter = 0
for i in range(1000):
    arr[i%3] = int(input('->'))
    if arr[i%3] == -1:
        break
    if i > 1 and arr[(i-2)%3] < arr[(i-1)%3] > arr[i%3]:
        counter += 1
print(counter)
0
0 / 0 / 0
Регистрация: 15.11.2023
Сообщений: 2
17.11.2023, 18:43  [ТС]
Пишет: В задаче нельзя использовать списки и сортировку. Хотя там об этом не сказано было. Можно, пожалуйста, без списков?
0
Вирусоборец
 Аватар для thyrex
14439 / 7481 / 1579
Регистрация: 06.09.2009
Сообщений: 27,119
17.11.2023, 23:08
Выведите количество чисел, больших того, что перед ним, и того, что после него
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
17.11.2023, 23:26
Python
1
2
3
4
5
6
7
8
9
10
11
cur = prev = prev_prev = None
counter = 0
for i in range(1000):
    prev_prev = prev
    prev = cur
    cur = int(input('->'))
    if cur == -1:
        break
    if i > 1 and prev_prev < prev > cur:
        counter += 1
print(counter)
0
Вирусоборец
 Аватар для thyrex
14439 / 7481 / 1579
Регистрация: 06.09.2009
Сообщений: 27,119
18.11.2023, 05:52
idealist, решение не соответствует условию. Догадаетесь почему?
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
18.11.2023, 06:28
Цитата Сообщение от thyrex Посмотреть сообщение
почему?
Не, пока не догадался. Просветите!
0
Вирусоборец
 Аватар для thyrex
14439 / 7481 / 1579
Регистрация: 06.09.2009
Сообщений: 27,119
18.11.2023, 06:55
Предположим, -1 появится на 1500 месте. Искусственные ограничения, снять которые большинство вопрошающих не в состоянии, вводить ни к чему.
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
18.11.2023, 08:40
Лучший ответ Сообщение было отмечено Jhon Week как решение

Решение

Цитата Сообщение от thyrex Посмотреть сообщение
Предположим, -1 появится на 1500 месте
)) Ну, чтобы не ограничивать особо рьяных пользователей, которые не устанут вводить 1500 чисел вручную, можно так написать:
Python
1
2
3
4
5
6
7
8
9
10
11
cur = prev = prev_prev = None
counter = 0
while True:
    prev_prev = prev
    prev = cur
    cur = int(input('->'))
    if cur == -1:
        break
    if None not in (prev_prev, prev) and prev_prev < prev > cur:
        counter += 1
print(counter)
Ну или так )):
Python
1
2
3
4
5
6
7
8
9
10
11
cur = prev = prev_prev = None
counter = 0
for i in range(10**100):
    prev_prev = prev
    prev = cur
    cur = int(input('->'))
    if cur == -1:
        break
    if i > 1 and prev_prev < prev > cur:
        counter += 1
print(counter)
Что-то мне подсказывает, что столько пользователь точно не введет!
1
Вирусоборец
 Аватар для thyrex
14439 / 7481 / 1579
Регистрация: 06.09.2009
Сообщений: 27,119
19.11.2023, 01:53
Что-то мне подсказывает, что стоит обратить внимание, что условие явно намекает на проверку в некой тестовой системе. Что однозначно подразумевает, что для теста можно сгенерировать сколь угодно допустимый по размеру файл (с учетом затрат времени на выполнение алгоритма). И все эти Ваши никому не нужные в соответствии с входными данными '->' только вынуждают корректировать предлагаемое решение
Как по мне, так вариант от Catstail выглядит разумнее.

Добавлено через 3 часа 57 минут
Или так изменить вариант Catstail

Python
1
2
3
4
5
6
7
8
9
10
11
12
p = int(input())
c = int(input())
r = 0
flag = True
while flag:
    n = int(input())
    flag = n != -1
    if flag:
        if c>p and c>n:
            r += 1
        p, c = c, n
print(r)
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
19.11.2023, 06:57
Цитата Сообщение от thyrex Посмотреть сообщение
Как по мне, так вариант от Catstail выглядит разумнее.
Ну, все это дело вкуса, и они у нас с вами немножко разные. Ну и как-то странно выглядят попытки навязать свой вкус кому-то или доказать, что ваши предпочтения предпочтительнее...
0
Вирусоборец
 Аватар для thyrex
14439 / 7481 / 1579
Регистрация: 06.09.2009
Сообщений: 27,119
19.11.2023, 10:13
При чём здесь попытки навязать кому-то свой вкус? Цикл for используется, когда число повторений заранее известно, чего нет в условии данной задачи. А его бездумное использование и приводит к необходимости прерывать цикл с помощью break.
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
19.11.2023, 10:34
Цитата Сообщение от thyrex Посмотреть сообщение
Цикл for используется, когда число повторений заранее известно
А вы это сами придумали или вычитали где-то?
0
Вирусоборец
 Аватар для thyrex
14439 / 7481 / 1579
Регистрация: 06.09.2009
Сообщений: 27,119
19.11.2023, 11:18
Такие глупые вопросы и комментировать не за чем.

Кликните здесь для просмотра всего текста
Продолжайте учить пользователей своим методам и бездумному использованию библиотек там, где без них вполне можно обойтись. Как выразился уважаемый Catstail, продолжайте учить выковыривать изюм из булки. А еще Вы едва ли не в каждой теме пытаетесь застолбить за собой право дать последний ответ... Вот только Нарцисс из греческих мифов плохо закончил.
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
19.11.2023, 11:30
Цитата Сообщение от thyrex Посмотреть сообщение
глупые вопросы
Т.е. аргументы закончились, переходим на личности и хамство?
0
Вирусоборец
 Аватар для thyrex
14439 / 7481 / 1579
Регистрация: 06.09.2009
Сообщений: 27,119
19.11.2023, 11:51
Хамство? Элементарных вещей не знаете.

Добавлено через 2 минуты
Учебники и весь интернет кишит ответами "цикл с параметром используется тогда когда"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.11.2023, 11:51
Помогаю со студенческими работами здесь

Васильев C# Глава 7 задача 8 (Просьба объяснить формулировку(задача внутри)
Текст задачи Напишите программу с классом, у которого есть текстовое поле. Значение текстовому полю присваивается при создании объекта...

Васильев C# Глава 8 задача 2 (Просьба объяснить формулировку(задача внутри)
Текст задачи Написать программу , в которой есть класс с полем, являющимся ссылкой на одномерный целочисленный массив. У класса есть...

Задача со строками. Задача находится на фотке, которая прикреплена к сообщению
Фотку прикрепил к сообщению. П.5.4. Правил Запрещено создавать темы с бессмысленными названиями вроде &quot;Помогите!&quot;,...

Задача при создание нового лида выводится задача от несущ.пользователя Б24
При создание нового Лида Выходит уведомление от пользователя которого нету в компаний. Как поменять пользователя???

Задача целочисленного программирования. Задача на оптимизацию. Матричный метод
Здравствуйте. Преподаватель дал задачи (скриншоты прикреп.) и эти две задачи были решены компонентным методом (файлы прикреплены). Но...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru