Текстовый файл состоит из цифр от 1 до 6, знаков операций «—» и «*» (вычитание и умножение) и заглавных латинских
Определите максимальное количество символов в непрерывной последовательности символов, состоящей из буквы A, за которой следует корректное арифметическое выражение с целыми неотрицательными числами, записанными в десятичной системе счисления.
Приведём решение на языке Python.
s = open('24.txt').readline()
s= s.replace('2','1').replace('3','1').replace('4','1').replace('5','1').replace('6','1')
s = s.replace('*', '-').replace('B', ' ').replace('C', ' ').replace('D', ' ')
s = s.replace('1A', '1 A').replace('--', '- -').replace('AA', 'A A').replace('-A', '- A').replace('A-', 'A -')
s = sorted(s.split(), key = len, reverse = 1)
for i in s:
if i[-1] == '-':
i = i[:-1]
if i[0] == 'A' and i.count('A') == 1:
print(i, len(i))
break
Ответ: 85.
Приведём решение Юрия Ворошилова на языке Python.
t = open('24.txt').readline()
for i in 'BCD':t=t.replace(i, ' ')
t=t.replace('-', '*').replace('**', '* *').replace('AA', 'A A').replace('A*', ' ')
a=t.split(' ')
b=[]
for i in a:
if (len(i)>2) and (i[0]=='A'):
b.append(i)
ms=''
for i in b:
if i[-1]=='*': i=i[:-1]
if i.count('A')==1:
if len(i) > len(ms): ms=i
else:
c=i.split('A')
for j in c:
if len(j)>2 and j[-1]=='*': j=j[:-1]
if len(j)+1 > len(ms): ms='A'+j
print(len(ms))
Приведём решение Юрия Красильникова на языке Python.
def calc(s):
i=0
if s[0] not in '123456': return i
while s[i] in '123456': i+=1
while True:
if s[i] not in '*-': return i
i+=1
if s[i] not in '123456': return i-1
while s[i] in '123456': i+=1
s = open('24.txt').readline().strip()
a=s.split('A')[1:]
ans=max(calc(x+'!') for x in a)
print(ans+1)
Приведём решение Юрия Красильникова на языке Python.
import re
s = open('24.txt').readline().strip()
a=re.findall('A[1-6]+(?:[*-][1-6]+)*',s)
print(max(len(x) for x in a))

