ЕГЭ по информатике 2026 · задание 12 из 27
ЕГЭ по информатике 2026, задание 12: исполнитель МТ
В 2026 году это главное содержательное изменение демоверсии. Линия осталась той же: умение исполнить алгоритм исполнителя с фиксированным набором команд. Уровень — повышенный, 1 балл, файл не нужен.
Новый сюжет — исполнитель МТ. ФИПИ прямо не советует решать его программой: легко потратить время и ошибиться в коде. Надёжный путь — несколько тактов вручную и формулировка, что машина делает с лентой.
В открытом банке прошлых лет ещё встречаются старые сюжеты: исполнитель Редактор со строкой «замени / нашлось». Их тоже стоит уметь, но на экзамене 2026 ориентируйтесь на МТ из демоверсии.
Как устроен МТ
Есть бесконечная лента из ячеек. В ячейке один символ алфавита, включая пустой «λ». Головка видит одну ячейку.
Программа — таблица. Строки — состояния q0, q1, … Столбцы — символы. В клетке команда из трёх частей:
символ, сдвиг, новое состояние
- первый элемент записывают в текущую ячейку, даже если он совпадает со старым;
- затем головка сдвигается:
Lвлево,Rвправо,Nостаётся,Sмашина останавливается после этой команды; - третий элемент — новое состояние, внутренняя память машины.
Пустая клетка таблицы означает, что такая пара «состояние + символ» в программе не задана. На экзамене до неё обычно не доходят, если следовать условию.
Состояние — это не «содержимое ленты». Лента — внешняя память, состояние — внутренняя. Одна и та же единица на ленте в q1 и в q2 обрабатывается разными командами.
Конспект
1. Найдите, где головка в начале и какое состояние. В демоверсии она часто стоит в ближайшей ячейке справа от последовательности, состояние q0.
2. Выполните 4–8 тактов на короткой ленте, например из четырёх символов. Рисуйте ленту и отмечайте головку стрелкой.
3. Сформулируйте словами, что делает машина: идёт влево и меняет нули на единицы до первой единицы, эту единицу гасит и останавливается, и тому подобное. Если фраза короткая и совпала с тактами — программа понята.
4. Дальше не моделируйте 1000 шагов. Примените правило к условию: сколько нулей останется, каким станет двоичное число, какое исходное число нулей максимально.
5. Разберите край: головка сразу видит λ, встречает сначала 1, в ленте нет нужной цифры. Краевые случаи часто и дают ответ.
6. Если спрашивают минимум или максимум исходного количества нулей, сначала опишите все ленты, которые после работы дают нужный результат, потом выберите экстремум.
Команда 0, L, q3 читается так: записать 0, сдвинуться влево, перейти в q3. Порядок именно такой: сначала запись, потом сдвиг.
Зачем не писать программу
Симулятор ниже годится только для тренировки на короткой ленте, чтобы сверить своё понимание таблицы. На экзамене перенос таблицы в код занимает дольше, чем ручной разбор, и одна перепутанная запятая даёт неверный ответ. ФИПИ рекомендует ручное исполнение.
# учебный симулятор, не для бланка экзамена
program = {
("q0", "λ"): ("λ", "L", "q1"),
("q1", "0"): ("1", "L", "q1"),
("q1", "1"): ("0", "N", "STOP"),
("q1", "λ"): ("λ", "N", "STOP"),
}
tape = {i: ch for i, ch in enumerate("1011")}
head = max(tape) + 1
state = "q0"
steps = 0
while state != "STOP" and steps < 10000:
ch = tape.get(head, "λ")
write, move, state = program[(state, ch)]
tape[head] = write
if move == "L":
head -= 1
elif move == "R":
head += 1
steps += 1
lo, hi = min(tape), max(tape)
print("".join(tape.get(i, "λ") for i in range(lo, hi + 1)))Старый сюжет «Редактор», если попадётся в банке: пока в строке нашлось сочетание, заменяйте его. Цикл while и str.replace с лимитом 1. Следите, с начала строки или с конца ищет «нашлось».
Типичные ошибки
- Сдвиг сделали до записи символа.
Sприняли за «сдвиг», а не за останов.- Пустой символ λ обработали как 0.
- Смоделировали только середину ленты и потеряли выход головки за край последовательности.
Попробуйте объяснить с Мишкой
Бесплатный ИИ-репетитор объяснит любую тему так, как вам понятно — шаг за шагом.
Начать бесплатно