Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Помогите написать программу для решения этой задачи задача с сайта Полякова номер задачи (7231)

В файле 17-390.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от –100 000 до 100 000 включительно. Определите количество троек, для которых выполняются следующие условия:
– в тройке есть четырёхзначные числа, но не все числа четырёхзначные;
– в тройке больше числе, кратных 5, чем чисел, кратных 7;
– каждый элемент тройки больше среднего арифметического всех элементов последовательности, запись которых заканчивается на 615. (Гарантируется, что в последовательности есть хотя бы один элемент, запись которого заканчивается на 615.) В ответе запишите количество найденных троек, затем – минимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности

По дате
По рейтингу
Аватар пользователя
Гуру

Задание простенькое но объёмное. Поэтому оставил тебе возможность хоть как то поучаствовать в написании

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
 data = [123,1615,946,2619,981651,891598,61235,21661,1652,2615] #Вместо списка нагугли и впиши открытие файла с переводом строки в список чисел 
 
колво_срабатываний_условия_1 = 0 
колво_срабатываний_условия_2 = 0 
колво_срабатываний_условия_3 = 0 
колво_срабатываний_всех_условий_одновременно = 0 
 
 
def проверка_условия_1(тройка): 
    d1 = [] 
    for i,val in enumerate(тройка): 
        if int(val // 1000) != 0 and int(val // 10000) == 0: 
            d1.append(True)  
        else: 
            d1.append(False)  
    if True in d1 and False in d1: 
        return True 
    else: 
        return False 
 
def проверка_условия_2(тройка): 
    d2 = [] 
    for i,val in enumerate(тройка): 
        if val % 5 == 0: 
            d2.append(True)  
        elif val % 7 == 0: 
            d2.append(False)  
    if d2.count(True) > d2.count(False): 
        return True 
    else: 
        return False 
 
 
def проверка_условия_3(арифм, тройка): 
    d3 = [] 
    for i,val in enumerate(тройка): 
        if val > арифм: 
            d3.append(True)  
        else: 
            d3.append(False)  
 
    if all(d3): 
        return True 
    else: 
        return False 
 
 
средння_арифм = [i for i in [i for i in data if i > 999 or i < -999] if str(i)[-3::] == '615'] 
средння_арифм = sum(средння_арифм) / len(средння_арифм) 
 
if len(data) > 2: 
    for i in range(0,len(data)-2): 
 
        проверяемая_тройка = [data[i],data[i+1],data[i+2]] 
        результат_проверки = [проверка_условия_1(проверяемая_тройка),проверка_условия_2(проверяемая_тройка),проверка_условия_3(средння_арифм,проверяемая_тройка)] 
 
        if результат_проверки[0]: 
            колво_срабатываний_условия_1 +=1 
 
        if результат_проверки[1]: 
            колво_срабатываний_условия_2 +=1 
 
        if результат_проверки[2]: 
            колво_срабатываний_условия_3 +=1 
         
        if all(результат_проверки): 
            колво_срабатываний_всех_условий_одновременно +=1 
 
    print(f''' 
    Количество срабатываний условий: 
    Условие 1 : {колво_срабатываний_условия_1} 
    Условие 2 : {колво_срабатываний_условия_2} 
    Условие 3 : {колво_срабатываний_условия_3} 
    Количество срабатываний одновременно всех условий : {колво_срабатываний_всех_условий_одновременно} 
    ''') 
 
else: 
    print('В последовательности меньше 3 чисел')