Исполнитель Редактор получает на вход строку цифр и преобразует её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды
заменить (111, 27)
преобразует строку 05111150 в строку 0527150.
Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
Дана программа для редактора:
НАЧАЛО
ПОКА нашлось (01) ИЛИ нашлось (02) ИЛИ нашлось (03)
заменить (01, 30)
заменить (02, 101)
заменить (03, 202)
КОНЕЦ ПОКА
КОНЕЦ
Известно, что исходная строка начиналась с нуля, а далее содержала только единицы, двойки и тройки. После выполнения данной программы получилась строка, содержащая единиц,
двоек и
троек. Сколько единиц было в исходной строке?
for i in range(50):
for j in range(50):
for k in range(50):
s = ’0’ + ’1’ * i + ’2’ * j + ’3’ * k
temp = s
while ’01’ in s or ’02’ in s or ’03’ in s:
s = s.replace(’01’, ’30’, 1)
s = s.replace(’02’, ’101’, 1)
s = s.replace(’03’, ’202’, 1)
if s.count(’1’) == 15 and s.count(’2’) == 10 and s.count(’3’) == 60:
print(temp.count(’1’))