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

задание 12 (№253)

mousoh01: Дана программа для Редактора: ПОКА нашлось (111) заменить (111, 2) заменить (2222, 333) заменить (33, 1) КОНЕЦ ПОКА Известно, что исходная строка содержала более 100 единиц и не содержала других цифр. Укажи-те минимально возможную длину исходной строки, при которой в результате работы этой про-граммы получится строка, содержащая минимально возможное количество единиц. Решаю прокруткой программы при количестве единиц 101, получается "-21 единица", следовательно, итоговая строка: 13211. При 102 единицах итоговая строка: 1322. При 108 единицах итоговая строка - 2. Не пойму, почему ответ 111 единиц? Помогите, пожалуйста!

Ответов - 7

polyakovss: mousoh01 пишет:При 108 единицах итоговая строка - 2 Нет. При 108 единицах итоговая строка - 1133. При 111 единицах итоговая строка - 22. Ответ: 111.

Черношвец: polyakovss (№ 4163) (Е. Джобс) Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов. 1. заменить (v, w) 2. нашлось (v) Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Дана программа для исполнителя Редактор: ПОКА нашлось (12) ИЛИ нашлось (13) заменить (12, 21) заменить (31, 23) заменить (13, 23) КОНЕЦ ПОКА Известно, что начальная строка состоит только из цифр 1 и 3. В ходе работы алгоритма получилась строка, не содержащая единиц. Укажите максимальную длину входной строки, если известно, что после выполнения алгоритма сумма всех цифр в полученной строке равна 404 Помогите, пожалуйста решить.

mousoh01: Извините, а при 101 единице? Я нашел неверное количество единиц -21?


polyakovss: В условии задачи сказано:Укажите минимально возможную длину исходной строки, при которой в результате работы этой программы получится строка, содержащая минимально возможное количество единиц.Минимально возможное количество единиц (то есть 0) должно быть в итоговой строке. При 101 единице в исходной строке итоговая строка: 13211. В ней 3 "1". При 102 единицах в исходной строке итоговая строка: 1322. В ней 1 "1". При 111 единицах в исходной строке итоговая строка: 22. В ней 0 "1".

mousoh01: Где-то у меня просчет. Все-таки хочу разобраться. Помогите, пж. У меня получается так: 102 единицы - 1322 103 единицы - 13221 ... 105 единиц - 13222 106 единиц - 132221 ... 108 единиц - 132222 - 13333 - 1133 109 единиц - ? 110 единиц -?

polyakovss: mousoh01 пишет: 109 единиц - ? 110 единиц -?109 единиц - 11331 110 единиц - 113311 Решение задачи: [pre2] for k in range(101,200): s = '1'*k while '111' in s : s = s.replace('111','2',1) s = s.replace('2222','333', 1) s = s.replace('33','1',1) if s.count('1') == 0: print(k) break [/pre2]

mousoh01: Все, понял!!! при 109 и 110 единицах "33" не превращаются в "1", т.к. условие ПОКА нашлось (111) не выполняется! И ТОЛЬКО ПРИ 111 единицах 1133111 - 1112 - 22! А тут единиц нет! СПАСИБО, polyakovss, за помощь



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