Исполнитель КЕГЛЯ получает на вход строку цифр и преобразовывает её. КЕГЛЯ может выполнять две команды, в обеих командах и
обозначают цепочки символов.
1.
2.
Дана программа для исполнителя КЕГЛЯ:
Найдите сумму всех цифр, отличных от , полученной в результате применения приведённой выше программы к строке
Решение ручками:
Начнем работу нашего алгоритма. Так как в исходной строке мы нашли , то заменим
на
.
Получим строку
На данной итерации цикла строка больше меняться не будет, идем дальше. Вновь встречаем , можем заметить, что если встречается
, то количество
уменьшается на один, а количество
остается неизменным, тогда можем выполнить это дейстие еще 299 раз, пока у нас не закончатся
.
Получим строку
Так как у нас уже нет комбинаций , проверяем следующие условия: находим комбинацию
, заменим
на
. Заметим, что после выполнения данного действия количество
уменьшается на два, а количество
увеличивается на единицу, при этом все новообразованные
располагаются перед последоватетельностью из
. Повторим замену
на
еще
раз, получим строку:
Проверим. нет ли в строке комбинации — нет, значит, завершаем работу алгоритма.
Запишем в ответ сумму всех цифр, отличных от , полученной после работы алгоритма строки:
. Запишем в ответ данное значение.
Решение прогой:
s = "1" * 5 + "0" * 300 + "3" * 5
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 list(s) if int(i) != 3]))