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
"""

Файлы данных

Репозиторий на GitHub