Исполнитель Редактор получает на вход строку цифр и преобразует её. Редактор может выполнять две команды, в обеих
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение
Если в строке нет вхождений
Б) нашлось (v).
Эта команда проверяет, встречается ли
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из
НАЧАЛО
ПОКА нашлось (11111)
заменить (222, 1)
заменить (111, 2)
КОНЕЦ ПОКА
КОНЕЦ
Данный алгоритм сначала заменит девять первых единиц на три двойки, а затем заменит эти три двойки на одну единицу, после чего алгоритм заменит эту единицу и следующие за ней две единицы на двойку. То есть одиннадцать подряд идущих единиц заменяются на
Далее алгоритм заменит ещё
Приведем другое решение.
Данный алгоритм сначала заменит девять первых единиц на три двойки, а затем заменит эти три двойки на одну единицу, после чего алгоритм заменит эту единицу и следующие за ней две единицы на двойку. То есть одиннадцать подряд идущих единиц заменяются
В результате получится строка, содержащая двойку и следующие за ней
Затем за каждые три прохода цикла из строки будет удаляться по
Таким образом, из строки будет удалено
При очередном проходе цикла три единицы заменятся на двойку, при следующем — еще три единицы заменятся на двойку, после чего в строке останется четыре единицы, и выполнение цикла прекратится.
Таким образом, после применения данного алгоритма к строке из
Ответ: 2221111.
Приведём другое решение на языке Python.
str = 77 * "1"
while "11111" in str:
str = str.replace("222", "1", 1)
str = str.replace("111", "2", 1)
print(str)

