Алгоритм решения задания 14. Часть 1
Учимся решать 15 задания первого типа
Читать
Откройте файл электронной таблицы, содержащей в каждой строке семь натуральных чисел. Определите наибольший номер строки таблицы, для чисел которой выполнены оба условия:
– в строке есть ровно два числа, каждое из которых повторяется трижды, и одно число без повторений;
– среднее арифметическое повторяющихся чисел строки меньше неповторяющегося числа.
В ответе запишите только число.
with open('901.txt') as f:
data = [list(map(int, i.split())) for i in f]
# Условие 1
def f1(line):
# Повторяются 3 раза
cnt_3 = [i for i in line if line.count(i) == 3]
# Повторяются 1 раз
cnt_1 = [i for i in line if line.count(i) == 1]
# 2 числа трижды и одно без повторений
return len(cnt_3) == 6 and len(cnt_1) == 1
# Условие 2
def f2(line):
# Все неповторяющиеся числа в строке
nrep = [i for i in line if line.count(i) == 1]
# Все повторяющиеся числа в строке
rep = [i for i in line if line.count(i) != 1]
# Среднее арифметическое
aver = sum(rep) / len(rep)
# Ср. арифм. меньше неповторяющегося
return aver < nrep[0]
# Находим наибольший номер строки
for pos, val in list(enumerate(data, start=1))[::-1]:
if f1(val) and f2(val):
print(pos)
break
