Цитата(computersha @ 11.11.2007 18:26) 

там шесть видов команд стандартных - i U j, i стоп и т.д.)
Считаю, что эти команды такие:
n L j - сместиться влево
n R j - сместиться вправо
n 0 j - стереть метку
n 1 j - поставить метку
n ? j1, j0 - условный переход
n Stop
n - это номер (адрес) строки.
j - адрес перехода.  Если j не указано, то переход на следующую строку.
Цитата(computersha @ 11.11.2007 18:26) 

1) Подсчитать количество различных программ длины 2.
Вопрос: что считать различными программами?  Если различными по коду, то тогда примерно такое рассуждение:
6*6 различных наборов команд
из них 5+5=10 содержат 1 Stop
и одна содержит два стопа
Все команды, кроме Stop, могут иметь адрес перехода 1 или 2.  То есть их число увеличивается в два раза, за вычетом 11.
Команда ? имеет два адреса.  То есть 5+5=10 команд нужно еще удвоить.
А программа, состоящая из двух ? еще раз удваивается..  значит, еще плюс 2.  
Таким образом, всего:
6*6 + (6*6-10-1) + 10 + 2 = 6*6*2 + 1 = 73.
Ищите у меня ошибки в комбинаторике и арифметике 

.
Цитата(computersha @ 11.11.2007 18:26) 

2) Написать программу бессмертного глобального вируса, уничтожающего ленту, на которой галочки и пустые места стоят как угодно далеко и справа и слева.
3) Написать программу глобального бессмертного вируса, который уничтожает любую ленту.
Я что-то не улавливаю разницы в этих двух вопросах..  Вот, написал прогу, которая просто стирает все метки с ленты.
Код
 1  R
 2  ?  3, 1
 3  0
 4  L
 5  ?  6, 4
 6  0  1
Она действительно бессмертная, если лента бесконечная в обе стороны 

.
Цитата(computersha @ 11.11.2007 18:26) 

4) Написать программу удвоения массива, изображающего число.
Как я понял, нужно умножить число на два.  Вот программа. 
Предполагаем, что перед началом каретка стоит на самой левой единице.  Также преполагаем, что слева от числа есть достаточно свободного места.
Код
 1  ?  3, 2  
 2  Stop
 3  0
 4  L
 5  ?  4, 6
 6  1
 7  R
 8  ?  7, 9
 9  1
10 R
Спасибо за задачку!  развлекся немного, узнал про машину Поста.. 
