Форум » Обработка символьных строк » не сходится ответ » Ответить

не сходится ответ

patnikk: (№ 5645) (П. Финкель) Текстовый файл 24-230.txt состоит не более чем из 106 символов и содержит буквы английского алфавита и цифры. Определите максимальное число, записанное в этом файле между ZZ и удовлетворяющее маске «8???54???22», где символ ? обозначает любую цифру. Пример такого числа: 81235412322. Найдите произведение нечётных цифр найденного числа. Ответ→76545 [pre2] ### ReadAllText('24.txt').split('Z').wh(s->s.IsMatch('8...54...22')).OrdD.First.ToS.Sel(c->c.ToDigit).Wh(d->d.isodd).Agr(1,(p,n)->p*n).pr Ответ→2657205 наверное файлик не тот, по логике - 24-229.txt [/pre2]

Ответов - 4

patnikk: [pre2] ### ReadAllText('24.txt').Replace('ZZ','*').split('*').wh(s->s.IsMatch('8...54...22')AND (S.LEN=11)).OrdD.First.ToS.Sel(c->c.ToDigit).Wh(d->d.isodd).Agr(1,(p,n)->p*n).pr [/pre2] тогда так и ответ сошелся

Поляков: patnikk пишет: .split('Z') Число должно быть ограничено парами ZZ: ZZ<число>ZZ.

Алина_00: Добрый день! Задание (№ 5645) (П. Финкель) Текстовый файл 24-230.txt состоит не более чем из 106 символов и содержит буквы английского алфавита и цифры. Определите максимальное число в этом файле, ограниченное двумя парами символов ZZ и удовлетворяющее маске «8???54???22», где символ ? обозначает любую цифру. Пример такого числа: 81235412322. Найдите произведение нечётных цифр найденного числа. Решение: with open('9-170 (1).txt') as f: list_txt = f.readline() letter ='0123456789' s = [i for i in list_txt.split('ZZ')] res = [] for string in s: score = 0 for chifra in string: if chifra in letter: score += 1 if score == len(string): if string[0] == '8' and string[-2:] == '22' and string[4:6] == '54': res.append(string) nechet = '13579' answer = 1 for i in str((sorted(res))[-1]): if i in nechet: answer *= int(i) print(answer) Не сходится ответ, вывод: 175, хотя на сайте 76545


Ж: [pre2] from fnmatch import * s=open('c:/24-230.txt').readline() l=set() while s: if 'ZZ' in s: i=s.index('ZZ') a=s[i:i+15] s = s[i+1 ::] if fnmatch(a,'ZZ8???54???22ZZ'): l.add(int(a[2:-2:])) else: break p=1 for c in str(max(l)): if c in '13579': p*=int(c) print(p) [/pre2]



полная версия страницы