заменить (v, w) Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111, 27) преобразует строку 05111150 в строку 0527150. Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку. |
нашлось (v) Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется. |
S.replace(v, w, k) v – что заменяем w – на что заменяем k – сколько выполнить замен в строке |
подстрока in S |
Шаблон программного решения:
s = <формируем строку путем умножения ‘символа’ на его количество>
<используя оператор ‘<подстрока>’ in s
и метод s = s.replace(‘<что заменить>’, ‘<на что заменить>’, 1),
переписываем программу на Python>
print(s)
Работа с дополнительными условиями в задании №12
Если нужно найти n, при котором выполняется определенное условие | for n in range(500): s = n* '<символ>' <шаблон программы, редактирующей строку> if <условие из задания>: print(n) |
Виды до условий | |
Найти n, при котором в итоговой строке цифра повторяется определенное количество раз |
if s.count('<цифра>') == <количество раз>: |
Найти n, при котором сумма цифр итоговой строки равна определенному числу |
c = sum([int(d) for d in s]) if c == < число >: |
Функция для проверки, является ли число простым (не имеет делителей, отличных от 1 и самого себя) |
def is_prime(n): for i in range(2, n // 2 + 1): if n % i == 0: # возвращаем ложь, если нашелся хотя бы 1 делитель return False # если дошли до конца цикла и не нашли делителей return True |
Найти n, при котором сумма цифр итоговой строки является простым числом | Перед основным циклом пишем функцию is_prime(). В конце основного цикла делаем проверку: if is_prime(< проверяемое число >) == True: |
Прототипы с ЕГЭ
Задача №1 Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 69 идущих подряд цифр 8? В ответе запишите полученную строку.
НАЧАЛО
ПОКА нашлось (3333) ИЛИ нашлось (8888)
ЕСЛИ нашлось (3333)
ТО заменить (3333, 88)
ИНАЧЕ заменить (8888, 33)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Ответ: 888
Задача №2 Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Дана программа для Редактора:
НАЧАЛО
ПОКА нашлось(>1) ИЛИ нашлось(>2) ИЛИ нашлось(>0)
заменить(>1,22>)
заменить(>2,2>)
заменить(>0,1>)
КОНЕЦ ПОКА
КОНЕЦ
На вход приведённой выше программе поступает строка, начинающаяся с символа «>», а затем содержащая 39 цифр «0», n цифр «1» и 39 цифр «2», расположенных в произвольном порядке. Определите наименьшее значение n, при котором сумма числовых значений цифр строки, получившейся в результате выполнения программы, является простым числом.
Ответ: 5
Задача №3 Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Исполнитель Редактор получает на вход строку начинающуюся на 3 и содержащую далее n цифр 5 (n > 3). На выполнение Редактору дана следующая программа:
НАЧАЛО
ПОКА нашлось(25) ИЛИ нашлось(355) ИЛИ нашлось(555)
ЕСЛИ нашлось(25)
ТО заменить(25, 3)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось(355)
ТО заменить(355, 52)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось(555)
ТО заменить(555, 23)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Найдите минимальное значение n, при котором сумма цифр конечной строки будет равна 27.
Ответ: 16
Задача №4 Исполнитель Редактор получает на вход строку цифр и преобразовывает её Дана программа для Редактора:
НАЧАЛО
ПОКА нашлось (12) ИЛИ нашлось (322) ИЛИ нашлось (222)
ЕСЛИ нашлось (12)
ТО заменить (12, 2)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (322)
ТО заменить (322, 21)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (222)
ТО заменить (222, 3)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
На вход приведённой выше программе поступает строка, начинающаяся с цифры «1», а затем содержащая n цифр «2» (3 < n < 10 000).
Определите наибольшее возможное значение суммы числовых значений цифр в строке, которая может быть результатом выполнения программы.
Ответ: 17
Задания уровня ЕГЭ
Задача №1 Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов.
1) заменить (v, w)
2) нашлось (v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор.
Дана программа для редактора:
НАЧАЛО
ПОКА нашлось(555) ИЛИ нашлось(11) ИЛИ нашлось(2)
ЕСЛИ нашлось(555)
ТО заменить(555, 1)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось(11)
ТО заменить(11, 25)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось(2)
ТО заменить(2, 5)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
На вход приведённой выше программе поступает строка, содержащая n цифр 5. Определите наименьшее значение n, большее 100 и кратное 9, при котором в результате работы алгоритма получится строка с максимальным числовым значением.
Ответ: 117
Задача №2 Исполнитель Робот существует в лабиринте и имеет 4 команды: вправо, влево, вниз и вверх. Каждая из которых перемещает Робота на одну клетку вправо, влево, вниз или вверх. Сколько клеток лабиринта соответствуют требованию, что, начав движение в ней и выполнив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка F6)?
НАЧАЛО
ПОКА <справа свободно> ИЛИ <снизу свободно>
ПОКА <справа свободно>
вправо
КОНЕЦ ПОКА
ПОКА <снизу свободно>
вниз
КОНЕЦ ПОКА
КОНЕЦ ПОКА
КОНЕЦ
Ответ: 25
Задача №3 Исполнитель выполняет следующую программу.
НАЧАЛО
ПОКА нашлось (900) или нашлось(8000) или нашлось(70)
заменить (70, 8)
заменить (900, 70)
заменить (8000, 900)
КОНЕЦ ПОКА
КОНЕЦ
Известно, что на вход исполнителя поступила строка из 71 цифры, начинающаяся с единицы. Определите минимальное четырехзначное число, которое может являться результатом работы исполнителя.
Ответ: 1008