Как решать задание 12 ЕГЭ по информатике (исполнитель для Редактора)?
Задание 12 с исполнителем-Редактором (команды заменить и нашлось) и циклом ПОКА над строкой из единиц и двоек. Что получится на выходе — не могу отследить руками. Как решать задание 12 на ЕГЭ?
2 ответа
Задание 12 — исполнитель Редактор, обрабатывающий строку командами:
заменить(v, w)— заменяет ПЕРВОЕ вхождение цепочки v на w;нашлось(v)— проверка, есть ли v в строке.
Программа обычно в цикле ПОКА нашлось(...) ... заменить(...). Нужно определить итоговую строку или её длину/число символов.
Метод — пойми закономерность, не гоняй вручную тысячи шагов. Часто строка из сотен символов, и руками не выследишь. Распиши, что делает один проход цикла, и найди инвариант (что сохраняется/как меняется длина).
Надёжнее — смоделировать на Python:
s = '2' * 70 + '1' * 70 # начальная строка из условия
while '12' in s: # пример: пока есть '12'
s = s.replace('12', '2', 1) # заменить первое вхождение
print(s, len(s))
replace(v, w, 1) — ровно как заменить: меняет только первое вхождение. in — это нашлось.
Частые ошибки:
- заменять ВСЕ вхождения вместо первого (в
replaceобязательно третий аргумент1!), - неверно перенести начальную строку из условия,
- запутаться в порядке команд внутри цикла.
Смоделировал точь-в-точь — получил гарантированно верный ответ.
Если решаешь руками — ищи, как сокращается строка за один цикл. Обычно команды «съедают» по символу определённого вида, и итог — это короткий хвост. Распиши первые 3–4 шага, увидишь паттерн.
Но самый безопасный путь на КЕГЭ — Python с str.replace(v, w, 1). Ключевой нюанс — именно первое вхождение, поэтому третий параметр 1 обязателен, иначе ответ разойдётся.