Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах и
обозначают цепочки цифр.
А) заменить ,
.
Эта команда заменяет в строке первое слева вхождение цепочки на цепочку
. Например, выполнение команды заменить(334, 27) преобразует строку 12113341121 в строку 1211271121.
Если в строке нет вхождений цепочки , то выполнение команды заменить
,
не меняет эту строку.
Б) нашлось .
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции ЕСЛИ условие
ТО команда1
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно).
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Дана программа для Редактора: НАЧАЛО
ПОКА нашлось (>) ИЛИ нашлось (>
) ИЛИ нашлось(>
)
ЕСЛИ нашлось (>)
ТО заменить (>,
>)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось(>)
ТО заменить (>,
>)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (>)
ТО заменить (>,
>)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
На вход приведённой ниже программе поступает строка, начинающаяся с символа «>», а затем содержащая цифр
,
цифр
и
цифр
, расположенных в произвольном порядке.
Определите сумму числовых значений цифр строки, получившейся в результате выполнения программы. Так, например, если результат работы программы представлял бы собой строку, состоящую из цифр
, то верным ответом было бы число
.
Решение руками:
Можно заметить, что программа меняет каждую цифру последовательности на что-то другое, при этом каждая цифра меняется только один раз, так как после замены «курсор» передвигается к следующей цифре.
Таким образом, все единицы изначальной строки будут заменены на 41, все двойки на 5, а все тройки на 44. Так как единиц было 15, то и комбинаций «41» будет 15. Двоек было 20, значит и «5» будет 20. Троек было 8, значит и комбинаций «44» будет 8.
Отсюда получаем, что в итоговой строке 15 единиц, 20 пятерок и четверка. Итоговая сумма данной строки равна:
.
Решение программой:
s = ’>’ + ’1’ * 15 + ’2’ * 20 + ’3’ * 8
while (’>1’ in s) or (’>2’ in s) or (’>3’ in s):
if ’>1’ in s:
s = s.replace(’>1’, ’41>’, 1)
if ’>2’ in s:
s = s.replace(’>2’, ’5>’, 1)
if ’>3’ in s:
s = s.replace(’>3’, ’44>’, 1)
print(s.count(’1’) + 2 * s.count(’2’) + 3 * s.count(’3’) + 4 * s.count(’4’) + 5 * s.count(’5’))