Исполнитель ОГУРЧИК получает на вход строку цифр и преобразовывает её. ОГУРЧИК может выполнять две команды, в обеих командах и
обозначают цепочки символов.
1.
2.
Дана программа для исполнителя ОГУРЧИК:
Найдите сумму цифр строки, полученной в результате применения приведённой выше программы к строке
Решение ручками:
Начнем работу нашего алгоритма. Так как в исходной строке мы нашли , то заменим
на
.
Получим строку
На данной итерации цикла строка больше меняться не будет, идем дальше. Вновь встречаем , можем заметить, что если встречается
, то количество
уменьшается на один, а количество
остается неизменным, тогда можем выполнить это дейстие еще 29 раз, пока у нас не закончатся
.
Получим строку
Так как у нас уже нет комбинаций , проверяем следующие условия: находим комбинацию
, заменим
на
. Заметим, что после выполнения данного действия количество
уменьшается на два, а количество
увеличивается на единицу, при этом все новообразованные
располагаются перед последоватетельностью из
. Повторим замену
на
еще
раза, получим строку:
Проверим. нет ли в строке комбинации — нет, значит, завершаем работу алгоритма.
Запишем в ответ сумму всех цифр полученной после работы алгоритма строки: . Запишем в ответ данное значение.
Решение прогой:
s = "1" * 10 + "0" * 30 + "3" * 50
while "10" in s or "11" in s or "330" in s:
if "10" in s:
s = s.replace("10", "1", 1)
elif "11" in s:
s = s.replace("11", "3", 1)
elif "330" in s:
s = s.replace("330", "100", 1)
print(sum([int(i) for i in s]))