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