Задания 12-го типа ЕГЭ по информатике 2021 года проверяют умение анализировать работу алгоритмов, выполняемых различными исполнителями. Рассмотрим решение таких задач на языке программирования Python.
Типы заданий
Задания 12-го типа можно условно разделить на категории:
- Исполнитель «Робот»: Задачи, где робот перемещается по лабиринту, взаимодействуя с клетками. Решение таких задач на Python, как правило, не требуется.
- Исполнитель «Чертежник»: Задачи, связанные с перемещением чертежника по координатной плоскости. Эти задачи также легко решаются вручную.
- Исполнитель «Редактор»: Задачи, где исполнитель обрабатывает входную строку символов или цифр, выполняя определённый алгоритм. Большинство заданий 12-го типа относятся к этому виду.
Разбор задач на исполнителя «Редактор»
Рассмотрим примеры задач с исполнителем «Редактор», решаемых на Python.
Задача 1: Замена четвёрок двоек и восьмёрок
Условие: Редактор получает на вход строку цифр. Он может выполнять две команды: заменить V на W (замена подстроки V на подстроку W) и нашлось V. Программа для редактора:
Пока нашлось четыре двойки или нашлось четыре восьмёрки: Если нашлось четыре двойки, то заменить четыре двойки на две восьмёрки. Иначе заменить четыре восьмёрки на две двойки.
К строке из 70 восьмёрок нужно применить данную программу.
Решение:
Создадим строку из 70 восьмёрок:
s = '8' * 70
Реализуем алгоритм на Python:
while '4444' in s or '8888' in s:
if '4444' in s:
s = s.replace('4444', '88', 1)
else:
s = s.replace('8888', '44', 1)
print(s)
Использование третьего аргумента в методе replace (1) ограничивает количество замен за одну итерацию.
Задача 2: Замена троек двоек и единиц
Условие: К строке из 77 единиц нужно применить программу:
Пока нашлось три двойки или нашлось три единицы: Заменить три двойки на одну единицу. Заменить три единицы на одну двойку.
Решение:
s = '1' * 77
while '222' in s or '111' in s:
s = s.replace('222', '1', 1)
s = s.replace('111', '2', 1)
print(s)
Без третьего аргумента в replace программа будет бесконечно заменять подстроки.
Задача 3: Замена семеричных и пятеричных групп
Условие: На вход подаётся строка из 55 цифр, последняя — 7, остальные — 5. Какая строка получится после применения программы:
Пока нашлось 722 или нашлось 557: Если нашлось 722, то заменить 722 на 157. Иначе заменить 557 на 72.
Решение:
s = '5' * 54 + '7'
while '722' in s or '557' in s:
if '722' in s:
s = s.replace('722', '157', 1)
else:
s = s.replace('557', '72', 1)
print(s)
Задача 4: Подсчет нулей
Условие: На вход подаётся строка «1» + 75 нулей. Программа заменяет «10» на «00100». Сколько нулей будет в результирующей строке?
Решение:
s = '1' + '0' * 75
while '10' in s:
s = s.replace('10', '00100', 1)
print(s.count('0'))
Задача 5: Сложный алгоритм
Условие: На вход поступает строка «3» + 115 «6». Программа содержит сложную вложенную структуру условных операторов. Необходимо найти результирующую строку.
Решение: (Код опущен, так как его описание отсутствует в исходном тексте)
Задача 6: Подсчет удалённых пятерок
Условие: На вход поступает строка из 500 пятерок. Программа заменяет три пятерки на одну тройку и три тройки на одну пятерку. Сколько пятерок было удалено?
Решение:
s = '5' * 500
deleted_fives = 0
while '555' in s or '333' in s:
if '333' in s:
s = s.replace('333', '5', 1)
else:
s = s.replace('555', '3', 1)
deleted_fives += 2
print(deleted_fives)
Задача 7: Подсчет суммы цифр после обработки
Условие: На вход поступает строка «>11111111111222222222223333333333333333333333». Программа заменяет «>1» на «22», «>2» на «2», «>3» на «1». Найти сумму числовых значений цифр в результирующей строке.
Решение:
s = '>11111111111222222222223333333333333333333333'
while '>1' in s or '>2' in s or '>3' in s:
s = s.replace('>1', '22', 1)
s = s.replace('>2', '2', 1)
s = s.replace('>3', '1', 1)
total_sum = 0
for char in s:
if char != '>':
total_sum += int(char)
print(total_sum)
Рассмотренные примеры демонстрируют типичные задачи 12-го типа ЕГЭ по информатике и методы их решения на Python. Ключевыми моментами являются корректная реализация алгоритма, использование метода replace с указанием количества замен и внимательное чтение условия задачи. Правильное понимание того, что строка является последовательностью символов, а не числом, также важно.