Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение
Если в строке нет вхождений
Б) нашлось (v).
Эта команда проверяет, встречается ли
исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно).
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Дана программа для Редактора:
НАЧАЛО
ПОКА нашлось (>1) ИЛИ нашлось (>2) ИЛИ нашлось (>3)
ЕСЛИ нашлось (>1)
ТО заменить (>1, 22>)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (>2)
ТО заменить (>2, 2>)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (>3)
ТО заменить (>3, 1>)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
На вход приведённой ниже программе поступает строка, начинающаяся с символа «>», а затем содержащая
Определите сумму числовых значений цифр строки, получившейся в результате выполнения программы. Так, например, если результат работы программы представлял бы собой строку, состоящую из
Данный алгоритм заменит
Таким образом, сумма числовых значений цифр строки, получившейся в результате выполнения программы равна 2 · 62 + 1 · 14 = 138.
Ответ: 138.
Приведём другое решение на языке Python.
s = '>' + '1' * 26 + '2' * 10 + '3' * 14
while ('>1' in s) or ('>2' in s) or ('>3' in s):
if '>1' in s:
s = s.replace('>1', '22>', 1)
if '>2' in s:
s = s.replace('>2', '2>', 1)
if '>3' in s:
s = s.replace('>3', '1>', 1)
print('сумма цифр:', s.count('1') + s.count('2') * 2)
Приведём решение Ильи Андрианова на языке Python.
s = '>' + '1' * 26 + '2' * 10 + '3' * 14
while ('>1' in s) or ('>2' in s) or ('>3' in s):
if '>1' in s:
s = s.replace('>1', '22>', 1)
if '>2' in s:
s = s.replace('>2', '2>', 1)
if '>3' in s:
s = s.replace('>3', '1>', 1)
print(sum([int(x) for x in s if x.isdigit()]))

