(№ 4633) Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов.
1. заменить (v, w)
2. нашлось (v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор.
Дана программа для исполнителя Редактор:
ПОКА нашлось (555) ИЛИ нашлось (888)
заменить (555, 8)
заменить (888, 55)
КОНЕЦ ПОКА
Известно, что начальная строка состоит только из цифр 8. Сколько различных строк может получиться в результате работы алгоритма?
У меня получается 8 различных вариантов{'55', '8588', '858', '8', '558', '5588', '85', '88'}. но это при условии, что я беру строку из 1-ой 8-ки. В условии 8ки во множественном числе и значит минимальное количество 8-к два?
def obr(s):
while "555" in s or "888" in s:
s = s.replace("555","8",1)
s = s.replace("888", "55", 1)
return s
rez = set()
for i in range(1,1000):
rez.add(obr("8" * i))
print(rez)
print(len(rez))