ЕГЭ Информатика 2021: Решение 12 задания на Python

Задания 12-го типа ЕГЭ по информатике 2021 года проверяют умение анализировать работу алгоритмов, выполняемых различными исполнителями. Рассмотрим решение таких задач на языке программирования Python.

Типы заданий

Задания 12-го типа можно условно разделить на категории:

  1. Исполнитель «Робот»: Задачи, где робот перемещается по лабиринту, взаимодействуя с клетками. Решение таких задач на Python, как правило, не требуется.
  2. Исполнитель «Чертежник»: Задачи, связанные с перемещением чертежника по координатной плоскости. Эти задачи также легко решаются вручную.
  3. Исполнитель «Редактор»: Задачи, где исполнитель обрабатывает входную строку символов или цифр, выполняя определённый алгоритм. Большинство заданий 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 с указанием количества замен и внимательное чтение условия задачи. Правильное понимание того, что строка является последовательностью символов, а не числом, также важно.

Что будем искать? Например,программа