Исполнитель Отрицатель преобразует число, записанное на доске. У исполнителя есть две команды:
1. Вычесть 3
2. Умножить на (-1)
Программа для исполнителя Отрицатель – это последовательность команд. Сколько различных неотрицательных результатов можно получить из исходного числа 82 в ходе исполнения программы, содержащей ровно 8 команд?
a = set() # Множество для ответа
def f(n, c):
# Важно! Условия должны быть раздельными,
# чтобы сначала проверялось только кол-во команд,
# а затем знак числа.
# Если сделать вместе — программа уйдёт в рекурсию из-за отрицательных чисел,
# которые получились при c = 8
if c == 8:
if n >= 0:
a.add(n)
else:
f(n+3, c+1)
f(n*(-1), c+1)
f(82, 0)
print(a)
Ответ: 8