Решение: Редактор: замены строк
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Команда «заменить (v, w)» заменяет в строке первое слева вхождение цепочки v на цепочку w. Если в строке нет вхождений цепочки v, строка не изменяется. Команда «нашлось (v)» проверяет, встречается ли цепочка v в строке, не изменяя её.
На вход приведённой ниже программы подали строку, состоящую из 65 идущих подряд цифр 9. Чему равна сумма цифр в строке, которая получится в результате выполнения программы?
НАЧАЛО
ПОКА нашлось (222) ИЛИ нашлось (999)
ЕСЛИ нашлось (222)
ТО заменить (222, 19)
ИНАЧЕ заменить (999, 2)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Решение по шагам
3 шагаВ начале строка состоит из 65 цифр 9, поэтому в ней есть цепочка $999$, а цепочки $222$ нет. Выполняется замена первого вхождения $999$ на $2$.
После появления трёх подряд идущих цифр 2 срабатывает условие нашлось (222), и цепочка $222$ заменяется на $19$. Далее снова проверяется строка с начала, поэтому возможные новые вхождения обрабатываются в установленном порядке.
Продолжаем выполнять замены до тех пор, пока в строке встречается хотя бы одна из цепочек $222$ или $999$. При последовательном моделировании всех замен сумма цифр конечной строки равна $17$.
Где здесь ошибаются
Заменять все вхождения цепочки за один шаг вместо первого слева.
Не учитывать, что при наличии $222$ команда замены $999$ не выполняется.
Остановить выполнение после исчезновения одной из цепочек, не проверив наличие другой.