Исполнитель Редактор получает на вход строку цифр и преобразует её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды
заменить (111, 27)
преобразует строку 05111150 в строку 0527150.
Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
Дана программа для редактора:
НАЧАЛО
ПОКА нашлось (55)
заменить (555, 44)
заменить (444, 555)
КОНЕЦ ПОКА
КОНЕЦ
Известно, что исходная строка содержала более 200 пятерок и не содержала других цифр. Укажите минимально возможную длину исходной строки, при которой в результате работы этой программы получится строка, содержащая хотя бы одну пятерку.
for i in range(200, 1000):
s = ’5’*i
counter = 0 # чтобы избежать бесконечных циклов
while ’55’ in s:
s = s.replace(’555’, ’44’, 1)
s = s.replace(’444’, ’555’, 1)
counter += 1
if counter > 100000:
s = ’0’
break
if s.count(’5’) >= 1:
print(i)
break