Задание №12: Исполнитель Редактор и преобразование строк
Основные типы и прототипы задания №12:
Исполнитель Редактор
Циклы 'пока нашлось'
Поиск простых чисел в строке
Условие задания
(Досрочный ЕГЭ-2026) На ленте исполнителя МТ в соседних ячейках записано двоичное представление числа 2047 без ведущих нулей. Ячейки справа и слева от последовательности заполнены пустыми символами «λ». В начальный момент времени головка расположена в ближайшей справа к последовательности ячейке. Программа работы исполнителя:
Команды движения каретки: L – влево, R – вправо, N – отсутствие сдвига, S – стоп. Определите результат выполнения программы. В ответе запишите получившееся число в десятичной системе счисления.
Ответ:
2048
Решение на Python: Симулятор: пошаговый запуск на числе 2047
table = { ("q0", "λ"): ("λ", "L", "q1"), ("q1", "λ"): ("1", "L", "q2"), ("q1", "0"): ("1", "S", "q1"), ("q1", "1"): ("0", "L", "q1"), ("q2", "λ"): ("λ", "S", "q2"), } n = 2047 tape = ["λ"] * 20 + list(bin(n)[2:]) + ["λ"] * 20 head = 20 + len(bin(n)[2:]) state = "q0" while True: symbol = tape[head] new_symbol, move, new_state = table[(state, symbol)] tape[head] = new_symbol state = new_state print(state, "".join(tape)) if move == "L": head -= 1 elif move == "R": head += 1 elif move == "S": break result = "".join(tape).replace("λ", "") print(result, int(result, 2))
Этот код разобран по шагам в разборе задания №12: там же типичные ошибки и лайфхаки.