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

