Другие языки программирования и технологии

Помогите пожалуйста с "Машиной Поста"

Продублировать массив n клеток дважды.

Каретка расположена в любой ячейке перед массивом
По-моему, нужно сперва уточнить условие, потому, что для произвольного массива клеток и произвольного N будет весьма сложный алгоритм...

В простом случае - будем считать, что вся ячейки ленты заняты 0, а все N клеток массива, который нужно скопировать заняты 1. И нам не обязательно сохранять исходный массив.

1. Начиная с текущей позиции делаем шаги вправо до тех пор, пока не встретим единицу
2. Стираем 1 в текущей ячейке
3. Двигаемся вправо пока не встретим 0 (он будет отделять исходный массив от копии и, заодно, будет использован для остановки программы)
4. Делаем шаг вправо (начало копии)
5. Движемся вправо до тех пор, пока в ячейках стоят 1 (пропускаем скопированные метки)
6. Ставим 1, шаг вправо, ставим еще одну 1.
7. Движемся влево пока не найдем ноль-разделитель
8. Делаем один шаг влево. Если там стоит 0 - конец программы. Иначе переходим к 9.
9. Идем влево пока не встретим 0, возвращаемся вправо на 1 шаг. Переходим к п. 2

Это схема алгоритма, в программу уж сами переведите. Возможно, это не самый простой алгоритм, что первое в голову пришло. Получим удвоенную область занятую единицами. Несложно переделать алгоритм, чтобы копии были разделены пустой ячейкой. Если исходный массив нужно сохранить, то код будет немного сложнее - текущую копируемую позицию нужно будет обозначать 0, потом восстанавливать 1...
Андрей Стомиков
Андрей Стомиков
62 375
Лучший ответ
Михаил Караваев спасибо вам большое