Исполнитель преобразует число на экране. У исполнителя есть три команды, которым присвоены номера.
1. Прибавить 1.
2. Умножить на 2.
3. Прибавить 3.
Первая команда увеличивает число на экране
Программа для исполнителя — это последовательность команд. Например, если в начальный момент на экране находится
Сколько существует программ, которые преобразуют исходное
Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для
Приведем решение на языке Python.
def fn(x, y, sp=[]):
if x >= y:
return 1 if x == y and 8 in sp and 11 not in sp and 15 not in sp else 0
return fn(x+1, y, sp+[x+1]) + fn(x*2, y, sp+[x*2]) + fn(x+3, y, sp+[x+3])
print(fn(2, 20, [2]))
Ответ: 180.
Приведем другое решение на языке Python.
def f(x, y):
if x > y or x == 11 or x == 15:
return 0
if x == y:
return 1
else:
return f(x + 1, y) + f(x * 2, y) + f(x + 3, y)
print(f(2, 8) * f(8, 20))

