Исполнитель Редактор получает на вход строку цифр и преобразует её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды
заменить (111, 27)
преобразует строку 05111150 в строку 0527150.
Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
Дана программа для редактора:
НАЧАЛО
ПОКА нашлось(44) ИЛИ нашлось(55)
заменить(44, 4)
заменить(55, 5)
КОНЕЦ ПОКА
КОНЕЦ
Какая строка получится в результате применения приведённой выше программы к строке, состоящей из 20 идущих подряд цифр 4, а затем 20 идущих подряд цифр 5? В ответе запишите полученную строку.
Решение руками
Мы имеем строку из двух частей — четверок слева и пятерок справа. На каждом шаге цикла мы убираем по одной четверке и пятерке. Крайнее состояние — 4455. Снова заходим в цикл и получаем 45. Больше в цикл зайти не можем.
Решение программой
s = ’4’ * 20 + ’5’ * 20
while ’44’ in s or ’55’ in s:
s = s.replace(’44’, ’4’, 1)
s = s.replace(’55’, ’5’, 1)
print(s)