Задание №17. Короткий конспект
Соседние группы, общий порог, точный перевод условий и проверка двух чисел ответа.
Последовательность сохраняет порядок чисел. Каждая соседняя пара или тройка проверяется отдельно. Ответ обычно содержит число подходящих групп и крайнее значение указанной величины среди них: минимум либо максимум.
Соседние группы
При длине списка N существуют N-1 пар и N-2 троек. Начало сдвигается на одну позицию. Элементы соседних групп перекрываются; сортировка меняет исходное соседство.
| Группа в Python | Начала |
|---|---|
a[i:i + 2] | range(len(a) - 1) |
a[i:i + 3] | range(len(a) - 2) |
Перевод условия
Если k — число элементов группы с нужным признаком, то «ровно один» означает k == 1, «не менее двух» — k >= 2, «не более двух» — k <= 2. Последняя проверка допускает и ноль. any проверяет только наличие хотя бы одного подходящего элемента.
Трёхзначность: 100 <= abs(x) <= 999. Окончание 15: abs(x) % 100 == 15. Модуль нужен для числа цифр и окончания; сравнение самих чисел и их сложение сохраняют знаки. Ноль не положительный и не отрицательный.
Порядок решения
- Из архива извлекается текстовый файл. Формат определяет, является ли первая строка числом данных или заголовком; автоматически удалять её нельзя.
- По всему списку находится общий порог: минимум, максимум или количество элементов с заданным признаком.
- Задаются длина группы и полное условие. Проверяются каждая соседняя группа и все ограничения вместе.
- Для принятой группы увеличивается счётчик и вычисляется величина для ответа. Первое принятое значение становится начальным минимумом или максимумом.
- После полного обхода выводятся количество и требуемое значение в указанном порядке. Отсутствие подходящих групп отмечается отдельно, например значением
None.
Возможные ловушки
- В условии о сумме остатков ↗ выражение
x % 18 + y % 18нельзя заменить остатком суммы: результаты могут различаться на 18. - В проверке квадрата суммы ↗ сначала складываются числа, затем сумма возводится в квадрат. Сумма квадратов меняет отбор.
- В условии о модуле максимума ↗ модуль берётся после выбора максимума. Обратный порядок может выбрать отрицательную сумму.
При финальной сверке сохраняются строгие и нестрогие сравнения, отрицательные значения и направление поиска: минимум не заменяется максимумом.