Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в которых и
обозначают последовательности цифр:
А)
Эта команда заменяет в строке первое слева вхождение последовательности на последовательность
Например, выполнение команды заменить преобразует строку
в строку
Если в строке нет вхождений последовательности то выполнение команды заменить
не меняет эту строку.
Б)
Эта команда проверяет, встречается ли последовательность в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение
, в противном случае возвращает значение
.
Строка исполнителя при этом не изменяется.
Цикл
Выполняется, пока условие истинно.
Какая строка получится в результате применения приведённой ниже программы к строке:
Если вы получили строку вида , то в ответе нужно записать
, а для строки
—
, скобки ставятся при трех и более повторениях.
Решение ручками:
Начнем работу нашего алгоритма. Так как в исходной строке мы нашли , то заменим
на
.
Получим строку
На данной итерации цикла строка больше меняться не будет, идем дальше. Вновь встречаем , можем заметить, что если встречается
, то количество
уменьшается на один, а количество
остается неизменным, тогда можем выполнить эти дейстия еще четыре раза, пока у нас не закончатся
.
Получим строку
Так как у нас уже нет комбинаций , проверяем следующие условия: находим
— заходим в цикл. Под первое условие наша строка не подходит — у нас нет
, но зато она подходит под второе, ведь у нас есть
. Тогда заменим
на
.
Получим строку
Заметим, что количество уменьшается на один, а количество
увеличивается на
. Тогда повторим данное действие, пока у нас есть комбинации
, а именно еще девять раз. Получим строку
. Теперь мы будем заходить только в третье условие. Заметим, что на каждой итерации кол-во троек уменьшается на
. Значит в какой-то момент мы дойдём до строки
. После этого в последний раз зайдём в третье условие и получим строку
, то есть запишем в ответ
.
Решение прогой:
s = ’1’ * 10 + ’2’ * 5 + ’333’
while ’12’ in s or ’13’ in s or ’33333’ in s:
if ’23’ in s:
s = s.replace(’23’, ’3’, 1)
elif ’13’ in s:
s = s.replace(’13’, ’33’, 1)
elif ’333’ in s:
s = s.replace(’333’, ’3’, 1)
print(s)