659 подписчиков
📎 24 задание на обработку строк решаем через регулярные выражения
(№ 5645) (П. Финкель) Текстовый файл 24-230.txt состоит не более чем из 10^6 символов и содержит буквы английского алфавита и цифры. Определите максимальное число в этом файле, ограниченное двумя парами символов ZZ и удовлетворяющее маске «8???54???22», где символ ? обозначает любую цифру. Пример такого числа: 81235412322. Найдите произведение нечётных цифр найденного числа.
#regex #регулярки #findall
Решение на Python:
import re
s=open('24-230.txt').readline()
l=re.findall(r'ZZ8\d{3}54\d{3}22ZZ',s)
t = (max(int(x[2:-2]) for x in l))
p = 1
for x in str(t):
if x in '13579':
p*=int(x)
print(p)
Решение на pascalabc.net
##
ReadAllText('24-230.txt')
.MatchValues('ZZ8\d{3}54\d{3}22ZZ')
.Select(t->t[3:^2].ToBigInteger)
.max.ToString
.Where(t->t in '13579')
.Select(t->StrToInt(t))
.Product
.Print;
Около минуты
3 июня