На ленте расположен массив из 2n меток. Составить программу, по которой машина раздвинет на расстояние в одну клетку две половины данного массива.
от

1 Ответ

Для раздвигания двух половин массива меток на расстояние в одну клетку можно использовать следующую программу:
1 → 2 2 → 3 3 → 4 4 ? 5, 6 5 → 6 6 ← 7 7 ? 8, 9 8 ← 9 9 !
Рассмотрим действия программы:
Команда 1 → 2 перемещает каретку вправо. Команда 2 → 3 снова перемещает каретку вправо. Команда 3 → 4 продолжает перемещение каретки вправо. Команда 4 ? 5, 6 проверяет наличие метки под кареткой. Если метка есть, то выполнится переход к команде 5, иначе к команде 6. Команда 5 → 6 сдвигает каретку вправо, пройдя метку. Команда 6 ← 7 перемещает каретку влево. Команда 7 ? 8, 9 проверяет наличие метки под кареткой. Если метка есть, то выполнится переход к команде 8, иначе к команде 9. Команда 8 ← 9 сдвигает каретку влево, пройдя метку. Команда 9 ! завершает программу.
от