Решение: Преобразование строки редактором
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Команда «заменить (v, w)» заменяет в строке первое слева вхождение цепочки v на цепочку w. Если в строке нет вхождений цепочки v, строка не изменяется. Команда «нашлось (v)» проверяет, встречается ли цепочка v в строке.
Цикл выполняется, пока условие истинно. В конструкции «ЕСЛИ условие ТО команда1 ИНАЧЕ команда2» выполняется команда1, если условие истинно, и команда2 — в противном случае.
Какая строка получится в результате применения программы к строке, состоящей из 70 идущих подряд цифр 8?
НАЧАЛО
ПОКА нашлось (2222) ИЛИ нашлось (8888)
ЕСЛИ нашлось (2222)
ТО заменить (2222, 88)
ИНАЧЕ заменить (8888, 22)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Решение по шагам
3 шагаВ начале строки нет цепочки 2222, поэтому выполняется замена первого вхождения 8888 на 22.
$$8888 \rightarrow 22$$После каждой такой замены проверяется наличие 2222. Если она появляется, она заменяется на 88. Затем снова обрабатывается первое подходящее вхождение.
Пошаговое моделирование программы для исходной строки из 70 цифр 8 завершается строкой 22. В ней отсутствуют обе цепочки 2222 и 8888, поэтому цикл прекращается.
Где здесь ошибаются
Заменять все вхождения цепочки сразу, хотя команда заменяет только первое слева.
Продолжать цикл после исчезновения обеих цепочек 2222 и 8888.
Выполнять замену 8888, если в строке уже есть 2222.