Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение
Если в строке нет вхождений
Б) нашлось (v).
Эта команда проверяет, встречается ли
исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно).
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Дана программа для редактора:
НАЧАЛО
ПОКА нашлось (01) ИЛИ нашлось (02) ИЛИ нашлось (03)
заменить (01, 2302)
заменить (02, 10)
заменить (03, 201)
КОНЕЦ ПОКА
КОНЕЦ
Известно, что исходная строка начиналась с нуля, а далее содержала только единицы, двойки и тройки. После выполнения данной программы получилась строка, содержащая
Заметим, что порядок цифр в исходной строке не важен.
Заметим, что после преобразования исходной строки получилась строка, содержащая
Если в исходной строке было
Если в исходной строке было
Таким образом, в исходной строке было две единицы.
Ответ: 2.
Приведём другое решение на языке Python.
for a in range(50):
for b in range(50):
for c in range(50):
s='0'+'1'*a+'2'*b+'3'*c
while '01' in s or '02' in s or '03' in s:
s=s.replace('01','2302',1)
s=s.replace('02','10',1)
s=s.replace('03','201',1)
if s.count('1')==50 and s.count('2')==12 and s.count('3')==7:
print(a)
break

