ниже программы к строке, состоящей из 70 идущих подряд цифр 8
Исполнитель Редактор получает на вход строку цифр и преобразовывает её.
Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды
заменить (111, 27)
преобразует строку 05111150 в строку 0527150.
Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 70 идущих подряд цифр 8? В ответе запишите полученную строку.
|
1 2 3 4 5 6 7 8 |
НАЧАЛО НАЧАЛО ПОКА нашлось (2222) ИЛИ нашлось (8888) ЕСЛИ нашлось (2222) ТО заменить (2222, 88) ИНАЧЕ заменить (8888, 22) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ |
Ответ:
Источник: Демонстрационный вариант ЕГЭ по информатике 2021 г. задания №12
Источник: Демонстрационный вариант ЕГЭ по информатике 2022 г. задания №12
Решение:
8 (70)
8888 8888
22 22
88
четыре восьмерки преобразуются две двойки; четыре четверки преобразуются две восьмерки.
Это означает, что было восемь восьмерок, а остались двойки; d каждом повторении будут удаляться шесть восьмерок.
Если повторить этот круг 10 раз, останется десять восьмерок.
8888 8888 88
22 22 88
88 88
22
или
|
1 2 3 4 5 6 7 |
s = '8' * 70 while '2222' in s or '8888' in s: if '2222' in s: s = s.replace('2222', '88', 1) else: s = s.replace('8888','22', 1) print(s) |
Ответ: 22
