Форум » Выполнение и анализ алгоритмов для исполнителей » Задача 12 » Ответить

Задача 12

Dezmond: Добрый день, коллеги! Я стал решать по методу, который описан выше. Задача примерно одинаковая но разница в количестве единиц, двоек и троек. Текст Задачи: Исполнитель Редактор получает на вход строку цифр и преобразует её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр. А) заменить (v, w). Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111, 27) преобразует строку 05111150 в строку 0527150. Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку. Б) нашлось (v). Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется. Цикл ПОКА условие последовательность команд КОНЕЦ ПОКА выполняется, пока условие истинно. Дана программа для редактора: НАЧАЛО ПОКА НЕ нашлось (00) заменить (01, 210) заменить (02, 3101) заменить (03, 2012) КОНЕЦ ПОКА КОНЕЦ Известно, что исходная строка начиналась с нуля и заканчивалась нулём, а между ними содержала только единицы, двойки и тройки. После выполнения данной программы получилась строка, содержащая 61 единицу, 50 двоек и 18 троек. Сколько цифр было в исходной строке? Проблема в том что переписав немного программу она запускается и не останавливается. Скажите пожалуйста в чем ошибка. Помогите исправить программу. [pre2] for ed in range(1,70): for dv in range(1,70): for tr in range(1,70): s = '0'+'1'*ed+'2'*dv+'3'*tr+'0' print(s) while not '03' in s: s = s.replace('01','210',1) s = s.replace('02','3101',1) s = s.replace('03','2012',1) ed_i = s.count('1') dv_i = s.count('2') tr_i = s.count('3') if ed_i == 70 and dv_i == 56 and tr_i == 23: print('Единиц:', ed) print('Двоек:', dv) print('Троек:', tr) [/pre2]

Ответов - 1

Поляков: Dezmond пишет: while not '03' in s: В условии по-другому. Вы получили зацикливание while.



полная версия страницы