Текстовый файл состоит из цифр от 1 до 9, знаков операций «+», «–» и «*» (сложение, вычитание и умножение) и заглавных латинских букв A, B, C, D.
Назовём правильной суммой строку, содержащую последовательность из одного или более десятичных чисел, в которой между соседними числами стоит ровно один знак «+» и нет других знаков.
Примеры правильных сумм: «23», «115+6», «1980+12+12351».
Назовём результатом правильной суммы число, которое получится при выполнении записанных в соответствующей строке сложений. Например, результат правильной суммы «2+3» — число 5.
Найдите в данной строке правильную сумму, расположенную непосредственно после буквы D и имеющую наибольший результат.
В ответе запишите результат найденной суммы. Гарантируется, что ответ не превышает 2 · 109.
##Приведём решение на языке Python.
from re import *
s = list(findall(r'D[1-9]+(?:\+[1-9]+)*', open('25.txt').readline()))
maxi = 0
for i in s:
if '+' not in i:
maxi = max(maxi, int(i[1:]))
else:
maxi = max(maxi, sum(int(x) for x in i[1:].split('+')))
print(maxi)
Ответ: 633197952.
Приведём решение Юрия Красильникова на языке Python.
import re
s = re.findall(r'D[1-9]+(?:[+\-][1-9]+)*', open('24.txt').readline())
print(max([eval(x[1:]) for x in s]))
Приведём решение Бориса Савельева на языке Python.
f=open('24.txt').readline()
f=f.replace('*',' ').replace('-',' ').replace('++',' ').replace('+D','+ D').replace('D+','D +').replace('A',' ').replace('B',' ').replace('C',' ').replace(' +',' ').replace('+ ',' ')
f=f.replace('DD','D D').replace('1D','1 D').replace('2D','1 D').replace('3D','1 D').replace('4D','1 D').replace('5D','1 D').replace('6D','1 D').replace('7D','1 D')
f=f.replace('8D','8 D').replace('9D','9 D').replace('DD','D D')
f=f.split(' ')
maxi=0
for i in f:
if len(i)>1 and i[0]=='D':
maxi=max(eval(i[1:]),maxi)
print(maxi)

