1. Главная
  2. Библиотека
  3. Программирование
  4. Необходимо написать программу, которая анализирует числ...
Разбор задачи

Необходимо написать программу, которая анализирует числовую последовательность и извлекает из неё различные характеристики. Самую длинную строго возрастающую подпоследовательность подряд Самую длинную строго убывающую подпоследовательность подряд

  • Предмет: Программирование
  • Автор: Кэмп
  • #Основы алгоритмизации и программирования
  • #Структуры и алгоритмы обработки данных
Необходимо написать программу, которая анализирует числовую последовательность и извлекает из неё различные характеристики. Самую длинную строго возрастающую подпоследовательность подряд Самую длинную строго убывающую подпоследовательность подряд

Условие:

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

Самую длинную строго возрастающую подпоследовательность подряд
Самую длинную строго убывающую подпоследовательность подряд
Локальные максимумы
Локальные минимумы
Повторяющиеся блоки
Изменение названия функции и её параметров категорически запрещено!

Формат входных данных

Подготовлена функция вида:
\ndef sequence_report(numbers):
На вход функции передаётся:
\nnumbers — список целых чисел, длина списка не меньше 10
числа могут:

повторяться

быть отрицательными

быть равными нулю

Формат выходных данных

Функция должна вернуть словарь вида:

{'longest_increasing': [...],

'longest_decreasing': [...],

'local_maxima': [...],

'local_minima': [...],

'repeated_blocks': [...]}

где:
\nlongest_increasing - самую длинную строго возрастающую подпоследовательность подряд.

Пример:

[2, 5, 6, 7]
(элементы идут друг за другом без пропусков)
\nlongest_decreasing - cамую длинную строго убывающую подпоследовательность подряд.

Пример:

[4, 3, 2]\nlocal_maxima - локальные максимумы.

Число является локальным максимумом,
если оно больше соседей слева и справа:
numbers[i - 1] < numbers[i] > numbers[i + 1]
первый и последний элементы не учитываются
\nlocal_minima - локальные минимумы

Число является локальным минимумом,
если оно меньше соседей слева и справа:
numbers[i - 1] > numbers[i] < numbers[i + 1]
первый и последний элементы не учитываются
\nrepeated_blocks - Повторяющиеся блоки

Повторяющимся блоком считается группа одинаковых чисел, идущих подряд, длиной не менее 3 элементов.

Решение:

Давайте разберем задачу и реализуем функцию sequence_report, которая будет анализировать числовую последовательность и извлекать из нее различные характеристики.

Шаги реализации:

  1. Самая длинная строго возрастающая подпоследовательность подряд:

    • Идем по списку и сравниваем каждый элемент с последующим. Если текущий элемент меньше следующего, увеличиваем счетчик. Если нет, проверяем, не является ли текущая последовательность самой длинной.
  2. Самая длинная строго убывающая подпоследовательность подряд:

    • Аналогично предыдущему шагу, но проверяем на убывание.
  3. Локальные максимумы...

Внутри — полный разбор, аргументация, алгоритм решения, частые ошибки и как отвечать на каверзные вопросы препода, если спросит

Попробуй решить по шагам

Попробуй один шаг и продолжи в режиме обучения или посмотри готовое решение

Какое из следующих утверждений верно относительно определения локального максимума в данной задаче?

Что нужно знать по теме:

Что нужно знать по теме

Алгоритм решения

Топ 3 ошибок

Что спросит препод

Не нашел нужную задачу?

Воспользуйся поиском

Выбери предмет