Условие: № 7677 (Уровень: Средний)
Исполнитель Редактор получает на вход строку цифр и преобразовывает её.
Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов.
изменить (v, w) нашлось (v) Первая команда заменяет в строке первые два слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Дана программа для Редактора:
НАЧАЛО
ПОКА нашлось(22) ИЛИ нашлось(33) ИЛИ нашлось(11)
ЕСЛИ нашлось(11)
ТО изменить(11, 2)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось(22)
ТО изменить(22, 3)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось(33)
ТО изменить(33, 1)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
На вход приведённой ниже программе поступает строка вида 21…1, содержащая одну цифру 2 и девяносто две цифры 1 после.
Определите какая строка получится в итоге работы алгоритма. В ответ напишите полученную строку.
s = '2' + '1' * 92
while '22' in s or '33' in s or '11' in s:
if '11' in s:
s = s.replace('11', '2', 2)
if '22' in s:
s = s.replace('22', '3', 2)
if '33' in s:
s = s.replace('33', '1', 2)
print(s)
Комментарии к решению:
- s = '2' + '1' * 92 - присваиваем переменной s строку, состоящую из символа '2' и повторяющегося 92 раза символа '1'.
- while '22' in s or '33' in s or '11' in s: - начинаем цикл, который будет выполняться, пока в строке s присутствуют подстроки '22', '33' или '11'.
- if '11' in s: - проверяем, если подстрока '11' присутствует в строке s.
- s = s.replace('11', '2', 2) - заменяем первые два вхождения подстроки '11' в строке s на символ '2'.
- if '22' in s: - проверяем, если подстрока '22' присутствует в строке s.
- s = s.replace('22', '3', 2) - заменяем первые два вхождения подстроки '22' в строке s на символ '3'.
- if '33' in s: - проверяем, если подстрока '33' присутствует в строке s.
- s = s.replace('33', '1', 2) - заменяем первые два вхождения подстроки '33' в строке s на символ '1'.
- print(s) - выводим значение переменной s.