Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение
Если в строке нет вхождений
Б) нашлось (v).
Эта команда проверяет, встречается ли
исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда1 (если условие ложно)
Дана программа для Редактора:
НАЧАЛО
ПОКА нашлось (01) ИЛИ нашлось (02) ИЛИ нашлось (03)
заменить (01, 103)
заменить (02, 10)
заменить (03, 210)
КОНЕЦ ПОКА
КОНЕЦ
Известно, что исходная строка начинается с
Заметим, что не важно, в каком порядке стоят
Подстрока 01 заменяется на 103, а подстрока 03 заменяется на 210. Значит, после работы алгоритма над подстрокой
Ответ: 29.
Приведём решение Бориса Савельева на языке Python.
from random import shuffle
for i in range (0,100):
s = list('1'*12+'2'*15+'3'*17)
shuffle(s)
s = ''.join(s)
s = '0'+s
while ('01' in s) or ('02' in s) or ('03' in s):
s=s.replace('01','103',1)
s=s.replace('02','10',1)
s=s.replace('03','210',1)
print(s.count('2'))

