Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение
Если в строке нет вхождений
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка
исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно).
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Дана программа для редактора:
НАЧАЛО
ПОКА НЕ нашлось (00)
заменить (01, 210)
заменить (02, 320)
заменить (03, 3012)
КОНЕЦ ПОКА
КОНЕЦ
Известно, что исходная строка начиналась с нуля и заканчивалась нулём, а между ними содержала только единицы, двойки и тройки. После выполнения данной программы получилась строка, содержащая
Заметим, что порядок цифр между нулями в исходной строке не важен.
Заметим, что после преобразования исходной строки получилась строка, содержащая
Если в исходной строке было
Если в исходной строке было 20 троек, то после преобразования получится
Таким образом, в исходной строке
Ответ: 36.
Приведём другое решение Зиберовой Виктории на языке Python.
for one in range(0,55):
for two in range(0,55):
for three in range(0,55):
x='0'+'1'*one+'2'*two+'3'*three+'0'
while not('00' in x):
x=x.replace('01','210',1)
x=x.replace('02','320',1)
x=x.replace('03','3012',1)
if x.count('1')==26 and x.count('2')==54 and x.count('3')==48:
print(one+two+three+2)

