Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2020, 17:29   #1
school2018
Новичок
Джуниор
 
Регистрация: 23.04.2020
Сообщений: 2
Восклицание Определить есть ли в массиве из 30 элементов хотя бы одна тройка соседних чисел

Определить есть ли в массиве из 30 элементов хотя бы одна тройка соседних чисел, в которой средний элемент больше своих "соседей", т. е. предшествующего и последующего. В случае положительного ответа определить номера элементов первой из таких троек. Результат вывести на экран.
Просьба решить на Python максимально подробно и просто. Я пока слабо разбираюсь в этой теме
school2018 вне форума Ответить с цитированием
Старый 23.04.2020, 23:04   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Нет. Я уже определил. Теперь твоя очередь.
Вот мой алгоритм.

Пусть j - первый элемент тройки.
Тогда, второй элемент - это ??, ну соответственно третий - это ???
1. Смотрим массив в цикле. j -меняем на 1 и максимальный номер массива - это N - 2 (вроде).
2. Если Первый элемент тройки < Второй элемент тройки И Третий элемент тройки < Второй элемент тройки, то
3. Печатаем j, j + 1, j + 2
4. Делаем break
5. См. п.1.
6.
Код:
Else:
       print('Таких троек нет!')
Цитата:
Я пока слабо разбираюсь в этой теме
Не мямли, а просто сделай.

PS: п.6. Else - это элемент цикла. Так что если найдёшь тройку, то выведешь номера элементов, а если нет, то сообщишь и об этом.
Это если убывающие/возрастающие элементы массива.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 04.05.2020, 14:00   #3
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Код:
numbers = [7,9,10,13,6,6,9,8,7]
found = [i for i, left, middle, right in zip(range(len(numbers)), numbers, numbers[1:], numbers[2:]) if middle>left and middle>right]
if found:
   print(f'Found at {i}')
else:
   print('Cannot find :(')
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 04.05.2020, 19:11   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Слегка подправил:
не
Код:
print(f'Found at {i}')
а
Код:
print(f'Found at {found}')
Код:
''' Определить есть ли в массиве из 30 элементов
    хотя бы одна тройка соседних чисел, в которой
    средний элемент больше своих "соседей", т. е.
    предшествующего и последующего.
    В случае положительного ответа определить номера
    элементов первой из таких троек.
    Результат вывести на экран. '''

numbers = [7,9,10,12,15,17,21,23,107]
found = [i for i, left, middle, right in zip(range(len(numbers)),
                                             numbers,
                                             numbers[1:],
                                             numbers[2:]) if middle>left and middle>right]
if found:
   print(f'Found at {found}')
else:
   print('Cannot find :(')
PS: Сам учусь.
Спасибо за такое решение.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
определить имеется ли в заданном целочисленном массиве A(N) хотя бы одна пара совпадающих по значению чисел mbkr Помощь студентам 5 09.02.2018 14:49
блок-схема: Заданы три числа. Определить, есть ли среди них хотя бы одна пара равных по величине СергейКл Помощь студентам 3 25.05.2015 13:37
Определить есть ли в ней хотя бы одна пара одинаковых «соседних» чисел. Anonim123 Паскаль, Turbo Pascal, PascalABC.NET 1 27.05.2014 14:02
Дано некоторый текст, в котором есть хотя бы одна запятая. Определить порядковый номер последней запятой в тексте FYNZIK Паскаль, Turbo Pascal, PascalABC.NET 1 10.03.2014 15:58
Delphi:Определить имеется ли среди чисел a,b,c хотя бы одна пара взаимно противоположных чисел. Skvot Помощь студентам 6 27.04.2009 11:47