Найти в Дзене

Алгоритм решения задания 24 ЕГЭ по информатике. Часть 1

📢 Следить за новостями мира информатики, а также общаться, делиться впечатлениями и готовиться к экзаменам лучше вместе, в нашем Telegram-канале. Задание 24 ЕГЭ по информатике посвящено обработке символьной информации и проверяет умения составлять программы для работы с текстовыми строками. В заданиях этого типа вам обычно предлагается текстовый файл, содержащий в себе определённую последовательность символов. Максимальная длина этой последовательности, чаще всего, не превышает 1 000 000 символов. От вас требуется прочитать данные из файла и написать программу, для поиска максимальной подстроки, для которой выполняются требуемые условия. Именно по типу требуемых условий мы и будем разделять данные задания. Хотя их также можно разделить по способам решения, которые включают в себя использование регулярных выражений, метода двух указателей и метода с заменой и разделением строки. Работе с регулярными выражениями была посвящена предыдущая статья, так что подробно останавливаться на этой
Оглавление

📢 Следить за новостями мира информатики, а также общаться, делиться впечатлениями и готовиться к экзаменам лучше вместе, в нашем Telegram-канале.

О задании

Задание 24 ЕГЭ по информатике посвящено обработке символьной информации и проверяет умения составлять программы для работы с текстовыми строками.

В заданиях этого типа вам обычно предлагается текстовый файл, содержащий в себе определённую последовательность символов. Максимальная длина этой последовательности, чаще всего, не превышает 1 000 000 символов.

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

Именно по типу требуемых условий мы и будем разделять данные задания. Хотя их также можно разделить по способам решения, которые включают в себя использование регулярных выражений, метода двух указателей и метода с заменой и разделением строки.

Работе с регулярными выражениями была посвящена предыдущая статья, так что подробно останавливаться на этой теме не будем. В этой статье мы разберем 4 базовых типа заданий 24, первые два из которых будем решать только с использованием регулярных выражений.

Данная статья разделена на 4 части, в каждой из которой мы разберём по одному типу 24 заданий.

Все части этой статьи доступны в подборке:

Задание 24 ЕГЭ по информатике | Информатика ЕГЭ | Шаг в будущее | Дзен

Методу с заменой и разделением строки отведём третий тип этих заданий. А в четвертом типе познакомимся с решением через метод двух указателей.

Помните, что выбранные методы – это лишь наши рекомендации. В своих решениях пользуйтесь тем, что вам кажется более удобным и надёжным. Но на реальном экзамене лучше перепроверьте полученный ответ разными методами.

Тип 1

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

Рассмотрим такую формулировку:

Задание 2400

«Текстовый файл состоит из символов N, O и P.

Определите максимальное количество идущих подряд последовательностей символов NPO или PNO в прилагаемом файле. Искомая последовательность должна состоять только из троек NPO, или только из троек PNO, или только из троек NPO и PNO в произвольном порядке их следования.

Для выполнения этого задания следует написать программу»

В 24 заданиях мы крайне рекомендуем сначала составить какой-нибудь небольшой пример, на котором вы сможете проверить работу вашего регулярного выражения.

Допустим, составим такую строку «NNNPOPNONPOPNOOO». В ней находятся 4 тройки символов PNO и NPO.

-2

Теперь сформулируем регулярное выражение, по которому будем определять такие последовательности. Мы ищем группу, состоящую из символов NPO или PNO, которая повторяется 1 и более раз.

В виде регулярного выражения это будет выглядеть следующим образом:

-3
Сразу отметим, что проверить составленное регулярное выражение вы можете на этом сайте.

Искать совпадения в строке будем функцией finditer(). Тогда на выходе мы будем получать итератор из match-объектов.

-4

А найти максимальную длину match-объектов можно с помощью такого списочного включения, которое передаётся функции max:

-5

Поскольку мы хотим видеть в ответе количество последовательностей (троек NPO или PNO), то получившееся в answer количество символов необходимо будет поделить на 3:

-6

Передадим на вход нашей программы рассмотренную ранее строку:

-7

В результате получаем число 4 – именно столько троек NPO и PNO, идущих подряд, мы и поместили в нашу строку.

Что же, программа готова и работает корректно. Теперь можем считать файл, приложенный к условию задания, в строку data и получить ответ на задание.

Полный код программы будет выглядеть так:

-8

В результате получаем число 327.

Далее мы будем пользоваться этим же кодом, меняться в нём будет только название файла и само регулярное выражение.

Пример 1

Рассмотрим еще одну формулировку задания этого же типа:

Задание 2405

«Текстовый файл состоит из символов K, L, M и N. В прилагаемом файле определите максимальное количество символов в непрерывной подпоследовательности, состоящей из идущих подряд групп символов KLMN в указанном порядке, при этом в начале и в конце искомой последовательности группа символов KLMN может быть неполной.

Искомая последовательность должна содержать не менее одной полной группы символов KLMN. Например, условию задачи удовлетворяют: MNKLMNKLMNK, или NKLMNKLMNKL, или KLMNKLMNKLM и т.п.

Для выполнения этого задания следует написать программу»

Найти 1 и более групп KLMN в тексте будет несложно. Для этого достаточно такого регулярного выражения: (KLMN)+

Но теперь нужно учесть «неполноценную» последовательность символов KLMN до и после найденной подстроки. В условии нам сказано, что группа символов KLMN может быть неполной.

Отсюда делаем вывод, что перед нашей последовательностью могут находиться такие символы:

  1. LMN
  2. MN
  3. N

Аналогично после этой последовательности могут идти такие символы:

  1. KLM
  2. KL
  3. K

И таких неполных групп может быть либо одна штука, либо вовсе ни одной. То есть можем использовать квантификатор «?» после каждой неполной группы символов. Значит, можем сформировать такое регулярное выражение:

-9

В целом, на этом все решение и заканчивается. Осталось только подставить это регулярное выражение в шаблон кода, который мы вывели ранее, и получить ответ:

-10

После завершения работы программы на экране видим число 182.

Пример 2

И для закрепления решим задание с такой формулировкой:

Задание 2416

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

Определите максимальное количество подряд пар символов вида гласная + согласная в прилагаемом файле.

Для выполнения этого задания следует написать программу»

Из представленных в условии букв гласными являются только две: A и E. Тогда в регулярном выражении будем требовать, чтобы сначала шла одна из гласных букв (A или E), а затем одна и более (квантификатор «+») букв B, C или D.

В итоге регулярное выражение будет таким:

-11

Подставляем его в уже известный нам шаблон кода и не забываем, что в ответ нужно дать количество пар символов, так что полученное значение нужно будет поделить на 2.

-12

В результате получаем число 202, которое и будет ответом в этом задании.

📌 Больше задач по данной теме с подробным решением можно найти на нашем сайте.

<<< Последняя часть Следующая чаcть >>>