Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/155: Рейтинг темы: голосов - 155, средняя оценка - 4.61
1 / 1 / 0
Регистрация: 28.01.2016
Сообщений: 5

Монотонный фрагмент последовательности на Python

31.01.2016, 22:55. Показов 29766. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача звучит следующим образом: Дана последовательность натуральных чисел, завершающаяся число 0. Определите наибольшую длину монотонного фрагмента последовательности (то есть такого фрагмента, где все элементы либо больше предыдущего, либо меньше).
Моё решение:

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
30
31
32
33
34
35
x1=int(inpu())
x2=int(input())
n_max=1
n=1
k=1
while x1!=0 and x2!=0:
    while x1>x2:
        n+=1
        k=1
        if x2==0:
            break
        if n>n_max:
            n_max=n
            x1=x2
            x2=int(input())
        else:
            x1=x2
            x2=int(input())
    while x1<x2:
        k+=1
        if x1==0:
            break
        if k>n_max:
            n_max=k
            n=1
            x1=x2
            x2=int(input())
        else:
            x1=x2
            x2=int(input())
    while x1==x2:
        n=k=1
        x1=x2
        x2=int(input())
print(n_max)
При проверке выдает "неполное решение" не могу понять в чём ошибка...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.01.2016, 22:55
Ответы с готовыми решениями:

Монотонный фрагмент
Задача Задана последовательность натуральных чисел, завершающаяся числом 0. Требуется определить наибольшую длину монотонного фрагмента...

перевести фрагмент кода с Python на С++
Помогите перевести код с Python на С++, пожалуйста import sys from PyQt5.QtWidgets import * from PyQt5.QtWebKitWidgets import * ...

Перевести фрагмент программы с Pascal на Python
Добавлено через 3 минуты еще вот эту, пожалуйста case n div 2 of 1: f:=n/5; 2: f:=n; 3: f:=9/3*n; 4: begin x:=(n-3)*pi/6;...

9
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
01.02.2016, 00:14
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
count = 1
longest = 1
last = int(input())
direction = True
while last:
    previous = last
    last = int(input())
    if (previous < last and direction) or (previous > last and not direction):
        round = 0
        count += 1
    elif previous == last:
        count += 1
        round += 1
    else:
        if round:
            count = round
        else:            
            count = 1
        round = 0
        direction = previous <= last
    if count > longest:
        longest = count
print(longest + 1)
0
1 / 1 / 0
Регистрация: 28.01.2016
Сообщений: 5
02.02.2016, 12:51  [ТС]
Возможно я что-то делаю не так, но у меня при вводе вашего варианта выводится ошибка, как я понял не известна переменная longest.
моё итоговое решение, которое прошло проверку:
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
30
31
32
33
34
x1=int(input())
x2=int(input())
n_max=1
n=1
while 0==0:
    if x2==0 or x1==0:
        break    
    while x1>x2:
        if x2==0:
            break        
        n+=1
        if n>n_max:
            n_max=n
            x1=x2
            x2=int(input())
        else:
            x1=x2
            x2=int(input())
    n=1
    while x1<x2:
        n+=1
        if n>n_max:
            n_max=n
            x1=x2
            x2=int(input())
        else:
            x1=x2
            x2=int(input())
    n=1
    while x1==x2:
        n=1
        x1=x2
        x2=int(input())
print(n_max)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
02.02.2016, 14:15
Если я правильно понял задачу, то как вариант:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def finder(a, tmp=0):
    for x in range(len(a)-1):
        if a[x] == a[x+1]:
            yield a[tmp:x+1]
            tmp = x+1
    yield a[tmp:]
 
l = [1,2,2,3,4,5,6,7,7,8,9,0]
 
#parts = [x for x in finder(l)]
#print('mono seqs:', parts)
#parts.sort(key=lambda x: len(x), reverse=True)
#print('sort seqs:', parts)
#print('long seqs:', len(parts[0]))
print(len(sorted((x for x in finder(l)), key=lambda a: len(a), reverse=True)[0]))
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
02.02.2016, 16:17
Цитата Сообщение от Chaynik01 Посмотреть сообщение
не известна переменная longest.
Ну так добавили бы…
Jabbson, С yield интересно, но не совсем по условию: может вообще не попасться равных элементов
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
02.02.2016, 16:59
Цитата Сообщение от Marinero Посмотреть сообщение
может вообще не попасться равных элементов
тогда должна вернуться длина всей последовательности
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
02.02.2016, 19:01
Цитата Сообщение от Jabbson Посмотреть сообщение
тогда должна вернуться длина всей последовательности
Именно. А нужна длина фрагмента где числа последовательно или увеличиваются или уменьшаются.(в исходном задании: не уменьшаются или не увеличиваются)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
02.02.2016, 20:52
Я думал, что нужно определить
Цитата Сообщение от Chaynik01 Посмотреть сообщение
наибольшую длину ... фрагмента, где все элементы либо больше предыдущего, либо меньше
т.е. не равны предыдущему элементу
0
1 / 1 / 0
Регистрация: 14.05.2020
Сообщений: 13
16.09.2020, 17:32
Как-то грубо 0==0 писать

Добавлено через 5 минут
можно просто True юзать
0
16.09.2020, 17:34

Не по теме:

starboy, ты специально ищешь старые темы чтобы там ответить?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.09.2020, 17:34
Помогаю со студенческими работами здесь

Написать фрагмент программы для вывода последовательности чисел
написать фрагмент программы для вывода последовательности чисел вида 1_2_3 4_5_6 7_8_9 ...._n

Монотонный сигнал после перезагрузки ноутбука
Уже второй раз повторяется следующая ситуация: В процессе игры сначала перестают работать некоторые кнопку на клавиатуре После...

Запишите латинские буквы в такой последовательности, в которой можно получить фрагмент Паскаль-программы
Дан набор операторов: Запишите латинские буквы в такой последовательности, в которой можно получить фрагмент Паскаль-программы,...

Выяснить, есть ли в последовательности фрагмент из подряд идущих литер, образующий начало латинского алфавита
1.7 Пусть во входном потоке находится последовательность литер, заканчивающаяся точкой (кодировка ASII). Выяснить, есть ли в данной...

Вместо звука идет монотонный писк все время
Вчера все работало отлично, сегодня утром встаю отрубился LAN-порт достал старую сетевую карту инет заработал все отлично, но отрубился...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru