Исполнитель Щелчок преобразует число на экране. У исполнителя есть три команды:
1. Прибавить 1
2. Умножить на 2
3. Прибавить 4
Программа для исполнителя — это последовательность команд.
Сколько существует различных результатов выполнения программ, содержащих 8 команд и начинающих свою работу из 2.
Решение 1 (Рекурсия)
def f(st, count, end_count):
global A # объявляем А глобальной переменной,
# чтобы добавлять туда новые элементы внутри функции
if count == end_count:
A.add(st)
else:
f(st + 1, count + 1, end_count)
f(st * 2, count + 1, end_count)
f(st + 4, count + 1, end_count)
A = set() # Лучший вариант для данной задачи, так как в множестве
# не повторяются элементы
f(2, 0, 8)
print(len(A))
Решение 2 (Динамика)
from itertools import product
t = product([1,2,3], repeat = 8) # Получаем набор команд
c = set() # Множество результатов
for i in t: # Проходимся по всем наборам
a = 2
for j in i: # Проходимся по командам
if j == 1:
a += 1
elif j == 2:
a *= 2
else:
a += 4
c.add(a) # Добавляем результат в множество
print(len(c)) # Выводим количество различных результатов