Мне немного стыдно, но по какой-то причине, я не могу решить эту задачу... Не понимаю в чём у меня ошибка.
Задача:
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов.
заменить(v, w)
нашлось(v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор.
Дана программа для Редактора:
ПОКА НЕ нашлось (00)
заменить (033, 1302)
заменить (03, 120)
заменить (023, 203)
заменить (02, 20)
КОНЕЦ ПОКА
На вход программе поступает строка, содержащая два нуля – на первом и на последнем местах. После выполнения данной программы получилась строка, содержащая 520 единицы, 786 двоек и 115 троек. Какое наибольшее количество двоек могло быть в исходной строке?
def interpreter(s):
while '00' not in s:
s = s.replace('033', '1302', 1)
s = s.replace('03', '120', 1)
s = s.replace('023', '203', 1)
s = s.replace('02', '20', 1)
return s
given_3 = 520
for j in range(i-115, -1, -1):
s = '0' + '33' * 115 + '23' * (given_3-115) + '2'*j + '0'
ans = interpreter(s)
if ans.count('1') == 520 and ans.count('2') == 786 and ans.count('3') == 115:
print(s.count('2'))