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