Задание 9 ЕГЭ: отбор строк таблицы по условиям
Электронная таблица: отбор строк по условиям. Тема номера — обработка данных в электронной таблице. Ниже — пример с ответом и решением; кнопкой под ним можно решить такую же задачу с другими числами, ответ проверится сразу.
Пример
Задание выполняется с использованием прилагаемого файла.
Откройте файл электронной таблицы, содержащей в каждой строке пять натуральных чисел. Определите количество строк таблицы, для которых выполнены оба условия:
- в строке есть только одно число, которое повторяется трижды, остальные числа различны;
- повторяющееся число является минимальным числом строки.
В ответе запишите только число.
Ответ
133Решение
Для каждого числа строки считаем, сколько раз оно встречается в строке. Условие «в строке есть только одно число, которое повторяется трижды, остальные числа различны» означает, что упорядоченный набор этих счётчиков равен [1, 1, 3, 3, 3]. Считаем подходящие строки.
В электронной таблице: в G1 пишем =СЧЁТЕСЛИ($A1:$E1;A1) и копируем вправо до K1 — это счётчики повторов. В M1 проверяем оба условия: =ЕСЛИ(И(СЧЁТЕСЛИ(G1:K1;3)=3;СЧЁТЕСЛИ(G1:K1;1)=2;СУММЕСЛИ(G1:K1;3;A1:E1)/3=МИН(A1:E1));1;0), затем копируем формулы на все строки. Ответ — =СУММ(M:M).
Ответ: 133.
То же на Python (файл читается библиотекой openpyxl):
import openpyxl
ws = openpyxl.load_workbook("9.xlsx").active
rows = [list(r) for r in ws.iter_rows(values_only=True)]
def good(r):
s = sorted(r)
cnt = [r.count(x) for x in r] # сколько раз встречается каждое число
rep = [x for x in r if r.count(x) > 1] # повторяющиеся числа
uniq = [x for x in r if r.count(x) == 1] # неповторяющиеся числа
return sorted(cnt) == [1, 1, 3, 3, 3] and rep[0] == s[0]
print(sum(1 for r in rows if good(r)))