Текстовый файл состоит не более чем из символов и содержит только цифры шестнадцатеричной системы счисления, а также знаки «+» и «*» (сложения и умножения). Определите максимальное количество символов в непрерывной последовательности, чьё значение выражения является чётным, которая является корректным арифметическим выражением с целыми неотрицательными числами, записанными в десятичной системе счисления. В этом выражении никакие два знака арифметических операций не стоят рядом, в записи чисел отсутствуют незначащие (ведущие) нули и число 0 не имеет знака.
from re import *
s = open(’24_1.txt’).readline()
#задаём маску подходящего числа
num = r’([123456789][0123456789]*|0)’
#задаём маску подходящей подстроки
reg = rf’{num}([+*]{num})+’
#вычисляем максимальную по длине подходящую по маске подстроку
#используем функцию eval чтобы подсчитать значение выражения
m = max([x.group() for x in finditer(reg,s) if eval(x.group()) % 2 != 0],key = len)
#выводим ответ
print(len(m))
Ответ: 163