Исполнитель Калькулятор преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
- Прибавить 1
- Прибавить 2
- Вычесть 3
Сколько существует программ, для которых при исходном числе 20 результатом будет являться число 12? При этом траектория вычисления содержит только числа от 10 до 30 (включительно и без повторов).
def f(s):
a = s[-1]
if len(s) > 1 and a == 12:
return 1
if a < 10 or a > 30 or (a in s[:-1]):
return 0
return sum(f(s + [a + h]) for h in [2, 1, -3])
print(f([20]))
Ответ: 284