Привет! 24 задание из ЕГЭ по информатике бывает самым разнообразным. И неплохо бы иметь в запасе еще один способ решений - через регулярные выражения.
Сама я в свое время прошла один замечательный курс по регулярным выражениям на степик - Регулярные выражения на Python. Он достаточно объемный, много практики, но помогает разобраться с этой темой раз и навсегда.
В этой статье я постараюсь выбрать только самое необходимое из теории для решения 24 задания ЕГЭ и привести разборы некоторых задач.
Регулярные выражения
Регулярные выражения — мощный инструмент для поиска и обработки текста. Они используются в Python через модуль re. Рассмотрим ключевые элементы синтаксиса, которые встречаются в примерах.
Базовый пример работы с регулярным выражением в Python
Строка 1. Импортируем модуль re (установки не требует, будет доступен на ЕГЭ).
Строка 2. Создаем строку, в которой будем искать выражение.
Строка 3. С помощью метода findall ищем все комбинации кот или кит в тексте.
Строка 4. Выводим результат.
Элементы синтаксиса регулярных выражений
1. Поиск символов
- [0-9] — любая цифра от 0 до 9.
- [a-z] — любая строчная буква от a до z.
- [A-Z] — любая заглавная буква от A до Z.
- [0-9a-fA-F] — шестнадцатеричная цифра (например, для поиска HEX-цветов).
2. Квантификаторы (повторы)
* — 0 или более повторений
- A* — ноль или больше букв A ("", "A", "AA", ...).
- [0-9]* — любое количество цифр (включая пустую строку).
+ — 1 или более повторений
- A+ — одна или больше букв A ("A", "AA", ...).
- [0-9]+ — одна или больше цифр.
{n,m} — От n до m повторений
- A{2} — ровно 2 A ("AA").
- A{2,4} — от 2 до 4 A ("AA", "AAA", "AAAA").
3. Группы и незапоминаемые группы
( ... ) — Запоминающая группа
- Группирует часть выражения и запоминает совпадение.
- Можно обращаться по индексу (\1, \2) или через group().
(?: ... ) — Незапоминаемая группа (?:)
- Группирует, но не запоминает совпадение.
- Полезно для применения квантификаторов (+, *) без сохранения группы.
Задача №1
Текстовый файл состоит из символов A, B и C.
Определите максимальное количество идущих подряд пар символов AB или CB в прилагаемом файле.
Искомая подпоследовательность должна состоять только из пар AB, или только из пар CB, или только из пар AB и CB в произвольном порядке следования этих пар.
Для выполнения этого задания следует написать программу.
Решение
Строка 2. Открываем и читаем файл.
Строка 3. (?:AB|CB)+ — это регулярное выражение, которое ищет последовательности из пар AB или CB.
- (?:...) — незахватывающая группа (группировка без сохранения в отдельную группу).
- AB|CB — или AB, или CB.
- + — 1 или более повторений этих пар.
Строка 4. Ищем максимальное значение по длине.
Строка 5. Выводим длину максимального значения.
Задача №2
Текстовый файл состоит из десятичных цифр и заглавных букв латинского алфавита.Определите в этом файле последовательность идущих подряд символов, представляющих собой запись максимального чётного 14-ричного числа. В ответе запишите количество символов (значащих цифр в записи числа) в этой последовательности.
Примечание. Латинские буквы A, B, C и D означают цифры из алфавита 14-ричной системы счисления.
Решение
Разберём выражение по частям:
- [1-9A-D] - первый символ должен быть:
Цифра от 1 до 9 ИЛИ Буква от A до D - [0-9A-D]* - последующие символы (0 или более):
Любая цифра (0-9) ИЛИ Буква от A до D - [02468AC] - последний символ должен быть:
Чётная цифра (0,2,4,6,8) ИЛИ Буква A или C
Задача №3
Текстовый файл состоит из цифр 0, 1, 2, 3, 4 и знаков арифметических операций «−» и «+» (вычитание и сложение). Определите максимальное количество символов в непрерывной последовательности, которая является корректным арифметическим выражением с целыми неотрицательными числами. В этом выражении никакие два знака арифметических операций не стоят рядом, в записи чисел отсутствуют незначащие (ведущие) нули и число 0 не имеет знака.
В ответе укажите количество символов.
Решение
Разберем регулярное выражение:
1. Первое число: (?:[1-9][0-9]*|0)
- [1-9] — любая цифра от 1 до 9 (запрещает ведущий ноль)
- [0-9]* — любое количество цифр от 0 до 9 после первой
- |0 — или просто ноль
- ?: — незапоминаемая группа
2. Последующие операции и числа: (?:[-+](?:[1-9][0-9]*|0))*
- [-+] — знак + или -
- (?:[1-9][0-9]*|0) — ещё одно число (с теми же правилами)
- * — повторение 0 или более раз
- ?: — снова незапоминаемые группы
Задача №4
Текстовый файл состоит из цифр от 1 до 6, знаков операций «—» и «*» (вычитание и умножение) и заглавных латинских букв A, B, C, D.
Определите максимальное количество символов в непрерывной последовательности символов, состоящей из буквы В, за которой следует корректное арифметическое выражение с целыми неотрицательными числами, записанными в десятичной системе счисления.
Решение
Даннное решение аналогично предыдущей задаче. Добавим только символ "B" в начало строки и изменим символ "+" на "*" в блоке [-*].
Заключение
Конечно, не все задания 24 из ЕГЭ по информатике можно решить с помощью регулярных выражений. Но бывают случаи, когда без этого навыка не обойтись.
Если появятся вопросы, пишите в комментариях. Постараюсь помочь!
Удачи на экзаменах!