Текстовый файл состоит из заглавных букв латинского алфавита A, B, C, D, E и F.
Определите в прилагаемом файле максимальное количество идущих подряд символов,
среди которых пара символов BC (в указанном порядке) встречается ровно 190 раз.
В ответе запишите число — количество символов в найденной последовательности.
Для выполнения этого задания следует написать программу.
Решение
Regexp
🔹 Шаг 1. Подключаем re
import re
📌 Подключаем re: подходящий фрагмент опишем шаблоном с ровно 190 парами BC.
🔹 Шаг 2. Читаем файл в строку s.
s = open("24.txt").read()
📌 Читаем файл в строку s.
🔹 Шаг 3. gap — кусок без пары BC: любой символ, кроме B, или B не перед C
gap = r"(?:[^B]|B(?!C))*"
📌 gap — кусок без пары BC: любой символ, кроме B, или B не перед C. Между парами BC могут стоять только такие символы.
🔹 Шаг 4. Шаблон (?=((gap BC)…)) повторяет gap и BC ровно 190 раз
# gap — без BC; затем ровно 190 пар BC с gap между
reg = rf"(?=(({gap}(?:BC{gap}){{{{190}}}})))"
📌 Шаблон (?=((gap BC)…)) повторяет gap и BC ровно 190 раз. Просмотр с каждой позиции; длина захваченного куска — кандидат в ответ.
🔹 Шаг 5. Жми RUN
print(max((len(m.group(1)) for m in re.finditer(reg, s)), default=0))
📌 Жми RUN — в выводе будет максимальная длина последовательности (2287).
✅ Ответ: 2287
🔹 Полный код
import re
s = open("24.txt").read()
gap = r"(?:[^B]|B(?!C))*"
reg = rf"(?=(({gap}(?:BC{gap}){{190}})))"
print(max((len(m.group(1)) for m in re.finditer(reg, s)), default=0))