(Р.Косов ITец)Откройте файл электронной таблицы, содержащей в каждой строке восемь натуральных чисел.
Определите сумму номеров строк таблицы, для которых выполняются оба условия:
– В строке ровно три различных числа, каждое из которых повторяется дважды, и два числа без повторений;
– среди повторяющихся чисел строки есть однозначные числа.
В ответе запишите только число.
Решение
В каждой строке восемь чисел. Отбираем строки, где ровно три числа повторяются по два раза, два числа без повторений, и среди повторяющихся есть однозначное. Складываем номера таких строк.
# Таблица уже сохранена в файле 9.txt. Открываем файл и задаём best.
f = open('9.txt')
best = 0
# Читаем строки: разбиваем на числа и собираем множество различных значений.
for i, line in enumerate(f, start=1):
nums = list(map(int, line.split()))
values = set(nums)
# Ищем три числа, которые встречаются по два раза, и два числа без повторений.
pairs = [x for x in values if nums.count(x) == 2]
unique = [x for x in values if nums.count(x) == 1]
# Если три пары и два уникальных, а среди пар есть однозначное — прибавляем номер строки.
if len(pairs) == 3 and len(unique) == 2:
if any(x < 10 for x in pairs):
best += i
# Выводим сумму номеров подходящих строк.
print(best)
Ответ: 14098.
Решение. Посчитаем, сколько раз каждое число встречается в строке. В ячейку I1 введём:
=СЧЁТЕСЛИ($A1:H1;A1)
и скопируем по строке до P1, затем вниз до строки 4000.
В Q1 — три числа по два раза и два числа без повторений (шесть ячеек со счётчиком 2 и две со счётчиком 1):
=ЕСЛИ(И(СЧЁТЕСЛИ(I1:P1;2)=6;СЧЁТЕСЛИ(I1:P1;1)=2);1;0)
В R1 проверим, что среди повторяющихся чисел есть однозначное:
=ЕСЛИ(ИЛИ(И(I1=2;A1<10);И(J1=2;B1<10);И(K1=2;C1<10);И(L1=2;D1<10);И(M1=2;E1<10);И(N1=2;F1<10);И(O1=2;G1<10);И(P1=2;H1<10));1;0)
В S1 объединим оба условия:
=ЕСЛИ(И(Q1=1;R1=1);1;0)
В столбце T запишем номер подходящей строки (иначе — 0):
=ЕСЛИ(S1=1;СТРОКА();0)
Скопируем формулы вниз до строки 4000, включим фильтр по столбцу S (значение 1).
Сумму номеров получим формулой =СУММ(T1:T4000).
Сумма номеров всех подходящих строк — 14098.
В ответе запишите только число — 14098.