Алгоритмы и рекурсия · тема 8 из 8
Исполнитель как состояние и лента
Моделирование · ЕГЭ 12
Одна идея — один пример
Алгоритм удобно описать состоянием: содержимое ленты и позиция головки. На каждом шаге читаем символ, меняем его и сдвигаем позицию. Правила берутся из условия.
tape = list("010")
tape[1] = "0"
print("".join(tape))
Теперь решаем самостоятельно
Учебная модель ниже проходит ленту один раз. В полноценной машине есть состояния и таблица переходов; её нельзя заменять произвольной последовательностью replace.
Вводится непустая двоичная строка. Исполнитель идёт слева направо: 0 заменяет на 1, а 1 на 0; после каждого символа сдвигается вправо. Выведи итоговую ленту.
Пример входных данных и результата
Ввод:
01001
Вывод:
10110
Черновик и файл программы
Черновик сохраняется в этом браузере. Ctrl/⌘ + S — сохранить.
Результаты проверки
Напиши решение и нажми «Проверить код». Данные каждого теста подаются автоматически.
Нужна подсказка?
Работай с list, потому что символ строки нельзя заменить по индексу.
На чём легко ошибиться
Последовательные replace("0","1").replace("1","0") испортят уже изменённые символы.
Разобрать один из способов решения
Сначала попробуй написать код сам. Сравни алгоритм, затем закрой разбор и воспроизведи решение без подсказки.
tape = list(input())
for i in range(len(tape)):
tape[i] = "1" if tape[i] == "0" else "0"
print("".join(tape))Тесты проверяют результат на учебных примерах, но не доказывают правильность для любого входа. Объясни каждую строку и предложи собственный тест.
Перед следующей темой
Назови входные данные, результат, основной шаг алгоритма и граничный случай. Если использовал разбор, напиши решение заново. Для свободных экспериментов открой Python онлайн.
Все темы этого курса
Программа подготовлена по темам банка «Академии С». Официальные документы: ФИПИ. Справочник языка: Python. Не все экзаменационные задачи нужно решать программой: например, работа в таблицах требует освоения табличного редактора.