Найти тему

Разбор номера 8654 ЕГЭ по информатике #24

Оглавление

Условие: КЕГЭ № 8654 (Уровень: Средний)
Статья подготовлена командой itpy
Полный разбор задачи в Notion

(Л. Шастин) Текстовый файл состоит не более, чем из 1 200 000 прописных символов латинского алфавита.

Назовём маской подстроки последовательность символов, в которой также может встречаться символ «?», который означает ровно одну произвольную букву. Определите максимальное количество идущих подряд символов, среди которых нет ни одной подстроки, соответствующей маске ?B??D.

Пример: подстроки CBFED и BBBBD соответствуют маске ?B??D, а подстроки BCEFD и RBECS - нет.

Решение через Python и комментарии к нему:

-2

Комментарии к коду решения:

  1. from fnmatch import fnmatch - импортирует функцию fnmatch из модуля fnmatch, который предоставляет возможность осуществлять поиск строк с использованием шаблонов, аналогично функции fnmatch() в Unix.
  2. from itertools import product - импортирует функцию product из модуля itertools, который создает все возможные комбинации из входных данных.
  3. s = open('24.txt').readline() - считывает первую строку из файла '24.txt' и сохраняет ее в переменной s.
  4. for v in product('ABCDEFGHIJKLMNOPQRSTUVWXYZ', repeat=5): - запускает цикл for, который проходит через все возможные комбинации из букв латинского алфавита длиной 5 и сохраняет каждую комбинацию в переменной v.
  5. slovo = ''.join(v) - объединяет буквы из комбинации v в строку и сохраняет результат в переменной slovo.
  6. if fnmatch(slovo, '?B??D'): - проверяет, соответствует ли строка slovo заданному шаблону '?B??D'. Этот шаблон означает, что первый символ равен любому символу, второй символ - 'B', затем следует два любых символа и последний символ - 'D'.
  7. s = s.replace(slovo, '**** ') - если строка slovo соответствует шаблону, то заменяет все вхождения этой строки в переменной s на строку ' ****'.
  8. print(max(len(x) for x in s.split())) - выводит на экран длину самого длинного слова в переменной s, после того как все предыдущие замены были сделаны.

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

Ответ: 4187

Читайте нас в телеграмме:

Информатика ЕГЭ | itpy 👨‍💻

Присоединяйся к нашему Телеграм каналу: t.me/informatika_kege_itpy
Присоединяйся к нашему Телеграм каналу: t.me/informatika_kege_itpy

Наука
7 млн интересуются