Задание №12 ЕГЭ по информатике: разбор, шаблоны кода Python и анти-примеры | СмартКИМ
СмартКИМ УДОБНАЯ ПОДГОТОВКА К ЕГЭ И ОГЭ
Задачи №12 Решать в тренажере Войти в СмартКИМ
ЕГЭ (1–27) ОГЭ (1–15) Python: шпаргалка
Быстрый переход по номерам и темам
Базовый (1 балл) Время: 2-4 мин Python while s.replace(old, new, 1) Все задачи №{ topic_num } в каталоге

Задание №12. Исполнитель Редактор

Тема: Преобразование строк командами 'нашлось' и 'заменить', поиск суммы цифр
Моделирование работы алгоритма Редактора на Python. Обязательно использовать replace() с третьим аргументом 1.

1. Ключевое правило Задания №12 на Python:

В алгоритме Редактора команда заменить(v, w) заменяет ТОЛЬКО ПЕРВОЕ СЛЕВА вхождение цепочки $v$ на $w$.

⚠️ ВАЖНО: В Python метод replace() без третьего аргумента заменяет ВСЕ вхождения сразу! Всегда передавайте единицу: s = s.replace('111', '2', 1).

Разновидности и прототипы задания на экзамене

Тип 1: Прямой запуск алгоритма на заданной строке
Строка вида '1' + '2'*N + '3'*M.
Тип 2: Подбор минимальной/максимальной длины N
Перебор n в цикле `for n in range(4, 1000):` до выполнения условия на сумму цифр.

Боевой шаблон решения на Python

Запустить код в онлайн-песочнице
# === Боевой шаблон Задания №12 на Python ===

# Перебираем длину строки N (если требуется найти N):
for n in range(4, 1000):
    # Формируем исходную строку по условию:
    s = '>' + '1' * 26 + '2' * n + '3' * 26
    
    # Моделируем цикл алгоритма:
    while '>1' in s or '>2' in s or '>3' in s:
        if '>1' in s:
            s = s.replace('>1', '22>', 1)
        if '>2' in s:
            s = s.replace('>2', '2>', 1)
        if '>3' in s:
            s = s.replace('>3', '1>', 1)
            
    # Считаем сумму цифр в получившейся строке:
    sum_digits = sum(int(c) for c in s if c.isdigit())
    
    # Проверяем условие задачи (например, сумма цифр равна 100):
    if sum_digits == 100:
        print("Искомое n:", n)
        break

Анти-примеры (Типичные ошибки vs Как делать правильно)

Как делать НЕ надо:
Ошибка: s = s.replace('11', '2') без единицы
Заменит все '11' одновременно, что полностью исказит поведение редактора!
Как делать ПРАВИЛЬНО:
Правильно: ВСЕГДА указывать 1: s.replace('11', '2', 1)
ГРОБ

ГРОБ №12: Сумма цифр является простым числом

Условие: сумма цифр полученной строки — простое число.

Как обойти ловушку: Напишите функцию проверки простоты: `def is_prime(x): return x > 1 and all(x % d != 0 for d in range(2, int(x**0.5) + 1))`.

Лайфхаки и подводные камни на экзамене:

  • Сумма цифр строки в Python считается в 1 строку: `sum(map(int, s.replace('>', '')))`.
Банк реальных задач №12 Открыть в тренажере СмартКИМ