905.py
Откройте файл электронной таблицы, содержащей в каждой строке семь натуральных чисел.
Определите наименьший номер строки таблицы, для чисел которой выполнены оба условия:
1. в строке есть два числа, каждое из которых повторяется дважды, остальные три числа различны;
2. среднее арифметическое всех повторяющихся чисел строки меньше её максимального неповторяющегося числа.
В ответе запишите только число.
"""
Откройте файл электронной таблицы, содержащей в каждой строке семь натуральных чисел.
Определите наименьший номер строки таблицы, для чисел которой выполнены оба условия:
1. в строке есть два числа, каждое из которых повторяется дважды, остальные три числа различны;
2. среднее арифметическое всех повторяющихся чисел строки меньше её максимального неповторяющегося числа.
В ответе запишите только число.
"""
min_row = None
n = 0
for i in open('905'):
n = n + 1
# переводим строку в список из семи целых чисел
a = [int(x) for x in i.split()]
if len(a) != 7:
continue
# числа, встречающиеся ровно 2 раза и 1 раз
rep2 = [x for x in set(a) if a.count(x) == 2]
rep1 = [x for x in set(a) if a.count(x) == 1]
# два числа по два раза, три числа по одному разу
if len(rep2) != 2 or len(rep1) != 3:
continue
# среднее повторяющихся (двух чисел) меньше максимума неповторяющихся
if (rep2[0] + rep2[1]) / 2 < max(rep1):
min_row = n
break
print(min_row)
"""
Ответ: 17
"""
"""
Откройте файл электронной таблицы, содержащей в каждой строке семь натуральных чисел.
Определите наименьший номер строки таблицы, для чисел которой выполнены оба условия:
1. в строке есть два числа, каждое из которых повторяется дважды, остальные три числа различны;
2. среднее арифметическое всех повторяющихся чисел строки меньше её максимального неповторяющегося числа.
В ответе запишите только число.
"""
min_row = None
n = 0
for i in open('905'):
n = n + 1
# переводим строку в список из семи целых чисел
a = [int(x) for x in i.split()]
if len(a) != 7:
continue
# числа, встречающиеся ровно 2 раза и 1 раз
rep2 = [x for x in set(a) if a.count(x) == 2]
rep1 = [x for x in set(a) if a.count(x) == 1]
# два числа по два раза, три числа по одному разу
if len(rep2) != 2 or len(rep1) != 3:
continue
# среднее повторяющихся (двух чисел) меньше максимума неповторяющихся
if (rep2[0] + rep2[1]) / 2 < max(rep1):
min_row = n
break
print(min_row)
"""
Ответ: 17
"""