Статья Автор: Деникина Н.В., Деникин А.В.

Анализ строк числовой таблицы — Различные числа и экстремумы

Различные числа

Сортировка превращает значения в позиции

После сортировки минимум оказывается слева, максимум — справа, а нужные группы можно взять срезами. Исходную строку при этом лучше сохранить.

Микропаттерн: экстремумы лежат по краям. Используй b = sorted(a), а список a оставь для условий на исходный порядок.
Один взгляд

Что видно в b

L
b[0]минимум
R
b[-1]максимум
2
b[-2:]два наибольших

Все различны
len(set(a)) == len(a)
Кроме двух наибольших
b[:-2]
Без минимума и максимума
b[1:-1]

«Максимум меньше суммы остальных» превращается в b[-1] < sum(b[:-1]). «Сумма минимума и максимума больше суммы средних» — в b[0] + b[-1] > sum(b[1:-1]).


Полный пример

Полностью собираем условие

(Открытый вариант-2025) В строке пять натуральных чисел. Нужно проверить, что все числа различны, а сумма двух наибольших не больше суммы трёх остальных.

структура: все различныотношение: два справа против трёх слеваответ: количество строк

ABCDE
исходная84756
sorted45678
Сортируется копия строки. Исходный порядок остаётся доступен для других условий.


Результат на учебных строках: проходит 1 строка.

Решение в электронной таблице

Различные числа и две части отсортированного ряда

Исходные числа находятся в B:F. Служебные столбцы проверяют различность и сравнивают два наибольших числа с остальными.

Исследуйте такие данные

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

I4
fx
Выбери ячейку — её значение или формула появится в строке fx. Исходные числа можно менять прямо в таблице.
ABCDEFGHI
21данет0
32данет0
43дада1
54нетнет0
Служебная ячейка: строка формул показывает, как получен результат.
Сейчас проходит одна строка.
Рабочая книга 09_distinct.xlsx находится во вложениях. В ней можно продолжить исследование на большем наборе строк.

Экзаменационный файл

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

Полная программа уже показана в Python-блоке выше: для каждой строки строится отсортированная копия, затем проверяются различия и нужное соотношение частей.


Какая строка из примера проходит оба условия?


Ловушки
Два наибольших сравнили с суммой всей строки.
Забыли отдельную проверку «все числа различны».
Перезаписали a = sorted(a), хотя дальше нужен исходный порядок.
Загрузка...
Чтобы оставить комментарий, необходимо авторизоваться
💬
Пока нет комментариев. Будьте первым!
Печать