Текстовый файл состоит из цифр от 1 до 9, знаков операций «+», «–» и «*» (сложение, вычитание и умножение) и заглавных латинских букв A, B, C, D.
Назовём правильной суммой строку, содержащую последовательность из одного или более десятичных чисел, в которой между соседними числами стоит ровно один знак «+» или «-» и нет других знаков.
Примеры правильных сумм: «23», «115+6», «1980+12−123−51+3».
Назовём результатом правильной суммы число, которое получится при выполнении записанных в соответствующей строке сложений. Например, результат правильной суммы «2+3» — число 5, а результат правильной суммы «1+2−8+3» — число −2.
Найдите в данной строке расположенную непосредственно после буквы D правильную сумму с наибольшим результатом.
В ответе запишите результат найденной суммы. Гарантируется, что ответ не превышает 2 · 109.
Приведем решение Юрия Красильникова на языке Python.
def pravsum(s):
r,i = [],0
s += ';'
while True:
while '1' <= s[i] <= '9': i += 1
r.append(eval(s[:i]))
if s[i] not in '+-': break
i += 1
if not ('1' <= s[i] <= '9'): break
return max(r)
a = open('24.txt').readline().strip().split('D')[1:]
ans = [pravsum(x) for x in a if len(x) > 0 and x[0].isdigit()]
print(max(ans))
Ответ: 198.

