Найти в Дзене
Python для школьников

Исполнитель Редактор (12 задача ЕГЭ по информатике). Переписываем код на Python

Привет! Сегодня расскажу, как очень просто решить 12-е задание ЕГЭ по информатике, буквально переписав код на язык Python. Условие задачи 1 (№ 18) Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр. 1. заменить (v, w)
2. нашлось (v) Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w, вторая проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь».
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 68 идущих подряд цифр 8? В ответе запишите полученную строку. НАЧАЛО
ПОКА нашлось (222) ИЛИ нашлось (888)
ЕСЛИ нашлось (222)
ТО заменить (222, 8)
ИНАЧЕ заменить (888, 2)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ Ответ Как видите, решение получилось намного короче, чем само задание. Пройдемс
Оглавление

Привет! Сегодня расскажу, как очень просто решить 12-е задание ЕГЭ по информатике, буквально переписав код на язык Python.

Условие задачи 1

(№ 18) Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.

1. заменить (v, w)
2. нашлось (v)

Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w, вторая проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь».
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 68 идущих подряд цифр 8? В ответе запишите полученную строку.

НАЧАЛО
ПОКА нашлось (222) ИЛИ нашлось (888)
ЕСЛИ нашлось (222)
ТО заменить (222, 8)
ИНАЧЕ заменить (888, 2)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Ответ

Как видите, решение получилось намного короче, чем само задание. Пройдемся по строкам.

Строка 1. Создадим строку, состоящую из 68 идущих подряд цифр 8

Строка 2-3, 5. ПОКА нашлось (222) в строке ИЛИ нашлось (888) в строке, выполняем одно из двух действий.

Строки 4, 5. Заменяем первое вхождение символов "222" на "8" или "888" на "2". Здесь нужно не забыть добавить последний аргумент "1" в функцию replace(), иначе код будет работатьт некорректно.

Строка 7. Печатаем результат (28).

Условие задачи 2

(№ 2089) Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.

1. заменить (v, w)
2. нашлось (v)

Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w, вторая проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Дана программа для исполнителя Редактор:

НАЧАЛО
ПОКА нашлось (12) ИЛИ нашлось (32) ИЛИ нашлось (31)
ЕСЛИ нашлось (12)
ТО заменить (12, 21)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (32)
ТО заменить (32, 23)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (31)
ТО заменить (31, 13)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

На вход приведённой ниже программе поступает строка, содержащая 50 цифр 1, 50 цифр 2 и 50 цифр 3, расположенных в произвольном порядке. Запишите без разделителей символы, которые имеют порядковые номера 20, 80 и 120 в получившейся строке.

Ответ

-2

Строка 1. Создаем строку, содержащую 50 цифр 1, 50 цифр 2 и 50 цифр 3, расположенных в произвольном порядке.

Строки 2, 3, 5, 7. ПОКА нашлось (12) в строке ИЛИ нашлось (32) в строке ИЛИ нашлось (31) в строке, выполняем условия. Здесь важно правильно переписать код, и применять только if, никаких elif и else быть не должно!

Строки 4, 6, 8. Делаем замену первого вхождения символов "12", "32" или "31".

Строка 9. Печать результата. Важно помнить, что в Python нумерация начинается с нуля, поэтому порядковые номера выводим на 1 меньше: 20 -> 19, 80 -> 79, 120 -> 119.

Чтобы убедиться, что код написан правильно, можно изменить порядок расположения в первой строке. Например, изменить на:

s = "2" * 50 + "1" * 50 + "3" * 50

или

s = "3" * 50 + "1" * 50 + "2" * 50

Во всех случаях результат выполнения программы должен получиться одинаковым.

Условие задачи 3

(№ 2108) Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.

1. заменить (v, w)
2. нашлось (v)

Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w, вторая проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Дана программа для исполнителя Редактор:

НАЧАЛО
ПОКА нашлось(23)
заменить (23, 7)
КОНЕЦ ПОКА
КОНЕЦ

Исходная строка содержит 10 троек и некоторое количество двоек, других цифр нет, точный порядок расположения двоек и троек неизвестен. После выполнения программы получилась строка с суммой цифр 82. Какое наименьшее количество двоек могло быть в исходной строке?

Ответ

-3

Из условия задачи понятно, что чем больше замен 23 на 7 мы произведем, тем быстрее получим сумму 82. Нужно расположить двойки между тройками, чтобы получилось "2323232..." А оставшиеся двойки, если их будет больше 10, поместить в начало.

Строка 1. Создаем цикл для подбора количества двоек.

Строка 2. Создаем строку только из троек.

Строки 3-7. Размещаем двойки между тройками.

Строки 8-9. Переписываем алгоритм из условия задачи.

Строка 10. Проверяем сумму цифр в получившейся строке.

Строка 11. Выводим результат.

Строка 12. Прервём цикл, т.к. нас интересует наименьшее количество двоек.

Надеюсь, статья была для вас полезной. Удачи на экзаменах!