April 15

24 задача ЕГЭ информатики решается регулярками на раз-два

Я 100 лет пользовался регулярками и понимаю как они работают.. но когда я сел решать задачки по информатике я понял что совсем не знаю регулярки ))

Я никогда не пользовался такими мутными регулрками, но !

для решения ЕГЭ они подходят идеально.

Код сбит, сюда скопировал потому что источник может потеряться

24+regex.ipynb - Colab


6029

Текстовый файл состоит из символов E, D и F. Определите максимальную длину непрерывной последовательности символов, состоящей из чередующихся символов E и F в прилагаемом файле. Искомая последовательность может начинаться как с символа E, так и с символа F.


[ ]

from re import *s = open('24_6029.txt').readline()max(map(len, findall(r'(?:EF)+E?|(?:FE)+F?', s)))
11

1205 Апробация 2022

Текстовый файл состоит не более чем из 1200000 символов, которые являются прописными буквами латинского алфавита. Определите максимальное количество идущих подряд символов, среди которых нет символов G, W, P.


[ ]

from re import *

s = open('24_1205.txt').readline()

s = sub(r'[GWP]', ' ', s)

max(map(len, s.split()))

83

1975 Демоверсия 2022

Текстовый файл состоит из символов P, Q, R и S.
Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых нет идущих подряд символов P.


[ ]

from re import *

s = open('24_1975.txt').readline()

s = sub(r'P(?=P)', 'P ', s)

max(map(len, s.split()))

188

arrow_upward

arrow_downward

link

edit

delete

more_vert

1866 Основная волна 2021

Текстовый файл состоит не более, чем из 107 строчных букв английского алфавита. Найдите максимальную длину подстроки, в которой символы a и d не стоят рядом.


[ ]

from re import *

s = open('24_1866.txt').readline()

s = sub(r'a(?=d)|d(?=a)', '* ', s)

max(map(len, s.split()))

2252

21 (Демоверсия 2021)

Текстовый файл состоит не более чем из 106 символов X, Y и Z.
Определите максимальное количество идущих подряд символов, среди которых каждые два соседних различны.


[ ]

from re import *

s = open('24_21.txt').readline()

s = sub(r'(.)(?=\1)', r'\1 ', s)

max(map(len, s.split()))

35

7600 Досрочная волна 2023

Текстовый файл состоит не более, чем из 1 200 000 прописных символов латинского алфавита. Определите максимальное количество идущих подряд символов, среди которых любые два символа из набора Q, R, S в различных комбинациях (с учётом повторений) не стоят рядом.


[ ]

from re import *

s = open('24_7600.txt').readline()

s = sub(r'([QRS])(?=[QRS])', r'\1 ', s)

max(map(len, s.split()))

544

9845 Основная волна 27.06.23

Текстовый файл состоит из символов, обозначающих буквы латинского алфавита А, В и С и цифры 8 и 9.

Определите в прилагаемом файле максимальное количество идущих подряд символов, среди которых ни одна буква не стоит рядом с буквой, а цифра — с цифрой.


[ ]

from re import *s = open('24_9845.txt').readline()s = sub(r'([ABC])(?=[ABC])', r'\1 ', s)s = sub(r'([89])(?=[89])', r'\1 ', s)max(map(len, s.split()))
18

3228 Досрочный этап 2022

Текстовый файл состоит не более, чем из 106 символов из набора A, B, C.

Найдите максимальное количество подряд идущих пар символов АС или АВ. Искомая подстрока может включать только пары АВ, только пары АС или содержать одновременно как пары АС, так и пары АВ.


[ ]

from re import *s = open('24_3228.txt').readline()max(map(len, findall(r'(?:AB|AC)+', s))) // 2
19

4602 Основная волна 2022

Текстовый файл состоит из символов A, B, C, D и O. Определите максимальное количество идущих подряд пар символов вида

согласная + гласная

в прилагаемом файле.


[ ]

from re import *s = open('24_4602.txt').readline()max(map(len, findall(r'(?:[BCD][AO])+', s))) // 2
174

9753 Основная волна 19.06.23

Текстовый файл состоит из символов T, U, V, W, X, Y и Z.

Определите в прилагаемом файле максимальное количество идущих подряд символов (длину непрерывной подпоследовательности), среди которых символ Y встречается не более 150 раз.


[ ]

from re import *s = open('24_9753.txt').readline()max(len(m[0] + m[1])     for m in findall(r'([^Y]*)(?=((?:Y[^Y]*){,150}))', s))
244

10105 Демоверсия 2024

Текстовый файл состоит из символов T, U, V, W, X, Y и Z. Определите в прилагаемом файле максимальное количество идущих подряд символов (длину непрерывной подпоследовательности), среди которых символ T встречается ровно 100 раз.


[ ]

from re import *s = open('24_10105.txt').readline()max(len(m[0] + m[1])     for m in findall(r'([^T]*)(?=((?:T[^T]*){100}))', s))
133

17535 Основная волна 07.06.24

Текстовый файл состоит из символов A, B, C, D, E и F.

Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых пара символов CD (в указанном порядке) встречается ровно 160 раз.


[ ]

from re import *s = open('24_17535.txt').readline()s = sub('CD', '--', s)max(len(m[0] + m[1])     for m in findall(r'(-?[^-]*)(?=((?:--[^-]*){160}-?))', s))
9712

9791 Основная волна 20.06.23

Текстовый файл состоит из символов, обозначающих заглавные буквы латинского алфавита и цифры от 1 до 9 включительно. Определите в прилагаемом файле максимальное количество идущих подряд символов, которые могут представлять запись числа в шестнадцатеричной системе счисления.

Примечание. Цифры, числовое значение которых превышает 9, обозначены латинскими буквами, начиная с буквы А


[ ]

from re import *s = open('24_9791.txt').readline()max(map(len, findall(r'[1-9A-F][0-9A-F]*', s)))
21

17563 Основная волна 08.06.24

Текстовый файл состоит из символов, обозначающих знаки « – », «*» и цифры 0, 7, 8, 9.

Определите в прилагаемом файле максимальное количество идущих подряд символов, которые образуют математически правильную последовательность, в которую входят знаки «–» или «*» и натуральные числа без незначащих нулей.


[ ]

from re import *s = open('24_17563.txt').readline()nat = r'(?:[1-9]\d*)'exp = fr'{nat}(?:[-*]{nat})*'max(map(len, findall(exp, s)))
40

17641 Основная волна 19.06.24

Текстовый файл состоит из десятичных цифр, знаков «+» и «*» (сложения и умножения). Определите максимальное количество символов в непрерывной последовательности, являющейся корректным арифметическим выражением с целыми неотрицательными числами (без знака), значение которого равно нулю. В этом выражении никакие два знака арифметических операций не стоят рядом, порядок действий определяется по правилам математики. В записи чисел отсутствуют незначащие (ведущие) нули.


[ ]

from re import *s = open('24_17641.txt').readline()num = r'(?:[1-9]\d*|0)'prod = fr'(?:(?:{num}\*)*0(?:\*{num})*)'exp = fr'{prod}(?:\+{prod})*'max(map(len, findall(exp, s)))
142

[ ]


Платные продукты Colab - Отменить подписку

Кому надо расколупывайте исходник, будет норм