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

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

15.11.2023, 16:54. Показов 8835. Ответов 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,706
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
14450 / 7489 / 1582
Регистрация: 06.09.2009
Сообщений: 27,133
17.11.2023, 23:08
Выведите количество чисел, больших того, что перед ним, и того, что после него
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
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
14450 / 7489 / 1582
Регистрация: 06.09.2009
Сообщений: 27,133
18.11.2023, 05:52
idealist, решение не соответствует условию. Догадаетесь почему?
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
18.11.2023, 06:28
Цитата Сообщение от thyrex Посмотреть сообщение
почему?
Не, пока не догадался. Просветите!
0
Вирусоборец
 Аватар для thyrex
14450 / 7489 / 1582
Регистрация: 06.09.2009
Сообщений: 27,133
18.11.2023, 06:55
Предположим, -1 появится на 1500 месте. Искусственные ограничения, снять которые большинство вопрошающих не в состоянии, вводить ни к чему.
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
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
14450 / 7489 / 1582
Регистрация: 06.09.2009
Сообщений: 27,133
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,706
19.11.2023, 06:57
Цитата Сообщение от thyrex Посмотреть сообщение
Как по мне, так вариант от Catstail выглядит разумнее.
Ну, все это дело вкуса, и они у нас с вами немножко разные. Ну и как-то странно выглядят попытки навязать свой вкус кому-то или доказать, что ваши предпочтения предпочтительнее...
0
Вирусоборец
 Аватар для thyrex
14450 / 7489 / 1582
Регистрация: 06.09.2009
Сообщений: 27,133
19.11.2023, 10:13
При чём здесь попытки навязать кому-то свой вкус? Цикл for используется, когда число повторений заранее известно, чего нет в условии данной задачи. А его бездумное использование и приводит к необходимости прерывать цикл с помощью break.
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
19.11.2023, 10:34
Цитата Сообщение от thyrex Посмотреть сообщение
Цикл for используется, когда число повторений заранее известно
А вы это сами придумали или вычитали где-то?
0
Вирусоборец
 Аватар для thyrex
14450 / 7489 / 1582
Регистрация: 06.09.2009
Сообщений: 27,133
19.11.2023, 11:18
Такие глупые вопросы и комментировать не за чем.

Кликните здесь для просмотра всего текста
Продолжайте учить пользователей своим методам и бездумному использованию библиотек там, где без них вполне можно обойтись. Как выразился уважаемый Catstail, продолжайте учить выковыривать изюм из булки. А еще Вы едва ли не в каждой теме пытаетесь застолбить за собой право дать последний ответ... Вот только Нарцисс из греческих мифов плохо закончил.
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
19.11.2023, 11:30
Цитата Сообщение от thyrex Посмотреть сообщение
глупые вопросы
Т.е. аргументы закончились, переходим на личности и хамство?
0
Вирусоборец
 Аватар для thyrex
14450 / 7489 / 1582
Регистрация: 06.09.2009
Сообщений: 27,133
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
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru