Как делать 12 задание егэ информатика питон
Перейти к содержимому

Как делать 12 задание егэ информатика питон

  • автор:

Задание 12 ОГЭ информатика

12-е задание: «Файловая система и поиск файлов»
Уровень сложности — базовый,
Максимальный балл — 1,
Примерное время выполнения — 6 минут.

* c 2021 года задания темы выполняются на компьютере
* до 2020 г — это было задание № 4 ОГЭ

Файлы и каталоги
  • Файлы, размещенные в памяти компьютера, имеют имя и расширение. Имя и расширение файла отделяются символом точка ( . ). Пробел не должен стоять ни перед, ни после точки:
Оценки.doc Оценки - имя файла doc - расширение файла
текстовые файлы: .txt, .doc, .odt. файлы-изображения: .bmp, .jpg, .png. видео-файлы: .avi, .mp4. и т.п.
C:\ или D:\ 
Файл Оценки.doc находится в корневом каталоге: C:\Оценки.doc 
Файловая система (иерархия)
имя.расширение
Расширения текстовых файлов: .txt .doc .odt .docx .pdf и другие Расширения исполняемых файлов: .com .exe и другие Расширения файлов изображений: .bmp .jpg .gif .png и другие Расширения файлов веб-страниц (сайтов) и др. форматов для браузеров: .html .html .xml .xsl и другие

Рассмотрим хранение файлов на локальном компьютере:

Дерево каталогов

  • файлы на диске хранятся в каталогах (папках);
  • внутри каталогов могут находиться другие каталоги, таким образом, организуется сложная структура каталогов — иерархическая структура, называемая деревом каталогов;
  • главный каталог диска называется корневым каталогом и обозначается буквой логического диска, за которой следует двоеточие и знак «\» (обратный слэш); например, A:\ – это обозначение корневого каталога диска А.
  • Если в примере добавить файл с именем «file.jpg» и расположить его в папке 2007, то адрес файла на диске (или полный путь файла) будет:
C:\Фото\2007\file.jpg - полный путь файла file.jpg 
С:\USER\BIN\SCHOOL - полный путь каталога SCHOOL 

Полный путь файла

таким образом, полный адрес файла состоит из адреса каталога, в котором он находится, символа \ и имени файла; еще пример:

файловая система

Допустим, на жестком диске компьютера имеются следующие папки (каталоги) с файлами:

дерево файлов

Получим дерево:

  • звездочка «*» обозначает любое количество любых символов, в том числе, может обозначать 0 символов;
  • знак вопроса «?» обозначает ровно один любой символ.

Примеры масок файлов

ОГЭ по информатике 12 задание разбор

Для решения заданий с масками файлов, перейдите по ссылке на задания ЕГЭ.

Подробный видеоразбор по ОГЭ 12 задания:

�� Видеорешение на RuTube здесь

Рассмотрим, как решать 12 задание по информатике ОГЭ.

Разбор задания 12.4: Демонстрационный вариант ОГЭ 2022 г. ФИПИ

Сколько файлов с расширением .txt содержится в подкаталогах каталога Проза? В ответе укажите только число.

  • Откройте каталог Проза.
  • В поле для поиска введите маску для поиска фалов с любым именем но обязательно с расширением txt :

Ответ: 16

Задания прошлых лет для тренировки

Разбор задания 12.1:
Пользователь работал с каталогом Подготовка. Сначала он поднялся на один уровень вверх, затем спустился на один уровень вниз, потом ещё раз спустился на один уровень вниз. В результате он оказался в каталоге

C:\ГИА\Задания\График

Укажите полный путь каталога, с которым пользователь начинал работу.

1) C:\ГИА\Документы\Редактирование\Подготовка
2) C:\Подготовка
3) C:\ГИА\Документы\Подготовка
4) C:\ГИА\Подготовка

    1. Проследим действия пользователя последовательно (не обязательно):
. ←\Подготовка
C:\ГИА\Задания\График
. \ . \. C:\ГИА\Задания\График

2. Рассмотрим итоговое расположение и проследим «обратные» действия пользователя в обратном порядке с конца к началу. Красным будем выделять текущее нахождение.

C:\ГИА\Задания\График
C:\ГИА\Задания 
C:\ГИА 
C:\ГИА\Подготовка 

Ответ: 4

Разбор задания 12.2:

В некотором каталоге хранился файл Ландыш.dос, имевший полное имя

D:\2013\Весна\Ландыш.doc

В этом каталоге создали подкаталог Май и файл Ландыш.doc переместили в созданный подкаталог.
Укажите полное имя этого файла после перемещения.

1) D:\2013\Весна\Май\Ландыш.doc
2) D:\2013\Весна\Ландыш.doc
3) D:\2013\Май\Ландыш.doc
4) D:\Май\Ландыш.doc

    Рассмотрим последовательно действия с файлом и каталогами:
D:\2013\Весна\Май
D:\2013\Весна\Май\Ландыш.doc

Ответ: 1

Разбор задания 12.3:

Пользователь работал с каталогом

C:\Учёба\Математика\Задания

Сначала он поднялся на один уровень вверх, затем ещё раз поднялся на один уровень вверх и после этого спустился в каталог Биология, далее спустился в каталог Оценки.

Укажите полный путь каталога, в котором оказался пользователь.

1) C:\Биология\Оценки
2) C:\Оценки\Биология
3) C:\Учёба\Математика\Биология\Оценки
4) C:\Учёба\Биология\Оценки

  • Выполним действия пользователя, начиная с исходного местоположения:
C:\Учёба\Математика\Задания
C:\Учёба\Математика
C:\Учёба
C:\Учёба\→ Биология
C:\Учёба\Биология\→ Оценки

Ответ: 4

ЕГЭ по информатике 2022 — Задание 12 (Вперёд, к Победе!)

Сегодня научимся решать 12 задание из ЕГЭ по информатике 2022.

В основном 12 задание решается шаблонно с помощью Питона, но есть и задачи, в которых нужен особый подход.

Перейдём к классической задачке из ЕГЭ по информатике 2022.

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

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

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

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

Какая строка получится в результате применения приведённой выше программы к строке, состоящей из 239 идущих подряд цифр 6? В ответе запишите полученную строку.

Решим задачу с помощью программы на Python’е.

s = '6'*239 while ('2222' in s) or ('666' in s): if '2222' in s: s = s.replace('2222', '6', 1) else: s = s.replace('666', '2', 1) print(s)

Здесь в начале формируется строка, состоящая из 239 шестёрок. Потом эта строка подаётся в программу. Программу переводим с русского языка на язык Питон.

Третий параметр в функции replace обозначает, что замену нужно производить один раз. Это в точности соответствует предложенной функции заменить.

Ответ получается 2266.

Ответ: 2266

В следующей типовой задаче из ЕГЭ по информатике 2022 нужно сообразить один момент.

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

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

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

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

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

Здесь сказали, что начальный порядок цифр в строке неизвестен. А просят написать конкретные данные на выходе. Отсюда делаем вывод, что любой порядок в начале приводит к одному и тому же результату.

В строке заведём цифры по порядку: в начале единицы, потом двойки, потом тройки.

s = '1'*50 + '2'*50 + '3'*50 while ('21' in s) or ('31' in s) or ('23' in s): if '21' in s: s = s.replace('21', '12', 1) if '31' in s: s = s.replace('31', '13', 1) if '23' in s: s = s.replace('23', '32', 1) print(s[9] + s[89] + s[129])

Чтобы обратится к конкретному символу в строке, используем конструкцию s[позиция символа]. Но нумерация начинается с нуля.

В ответе запишем 132.

В следующей примерной задаче из ЕГЭ по информатике 2022 опять используем Питон.

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

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

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

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

Известно, что исходная строка содержала более 70 единиц и не содержала других цифр. Укажите минимально возможную длину исходной строки, при которой в результате работы этой программы получится строка, содержащая максимально возможное количество единиц.

Здесь мы попробуем с помощью программы формировать строчки с разной длиной и смотреть, какое количество единиц получится на выходе.

for i in range(71, 1000): s = '1'*i while '111' in s: s = s.replace('111', '22', 1) s = s.replace('222', '11', 1) print(i, s.count('1'))

Посмотрев результаты, понимаем, что максимальное количество единиц в окончательной строке равно 4. А минимальное количество единиц в изначальной строке, чтобы получилось в итоге 4 единицы, равно 73.

Ещё один частый гость в тренировочных вариантах из ЕГЭ по информатике 2022.

Задача (Сумма цифр + непонятный символ)

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

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

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

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

На вход приведённой ниже программе поступает строка, начинающаяся с символа «>», а затем содержащая 28 цифр 1, 18 цифр 2 и 35 цифр 3, расположенных в произвольном порядке. Определите сумму числовых значений цифр строки, получившейся в результате выполнения программы. Так, например, если результат работы программы представлял бы собой строку, состоящую из 50 цифр 4, то верным ответом было бы число 200.

Здесь снова результат будет одним и тем же независимо от того, как будут расположены числа в начале.

s = '>' + '1'*28 + '2'*18 + '3'*35 while ('>1' in s) or ('>2' in s) or ('>3' in s): if '>1' in s: s = s.replace('>1', '22>', 1) if '>2' in s: s = s.replace('>2', '2>1', 1) if '>3' in s: s = s.replace('>3', '1>2', 1) # Находим сумму цифр в строке sm=0 for i in range(0, len(s)): if s[i]!='>': sm = sm + int(s[i]) print(sm)

Чтобы найти сумму цифр, мы пробегаем по всей строке с помощью цикла range. Если символ не равен «>», то превращаем его в число с помощью функции int() и суммируем в переменную sm.

Так же можно сумму цифр найти с помощью такой конструкции: sm = s.count( ‘1’ )*1 + s.count( ‘2’ )*2 + s.count( ‘3’ )*3. Других цифр, кроме 1, 2 и 3 нет в строке. Мы находим вклад каждой цифры в зависимости от её веса и количества.

Задача (Трудно запрограммировать)

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

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

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

НАЧАЛО ПОКА нашлось (11) ЕСЛИ нашлось(112) ТО заменить (112, 5) ИНАЧЕ заменить (11, 3) КОНЕЦ ПОКА КОНЕЦ

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

Здесь не важно, по какой ветке будет идти программа, прирост в сумме цифр будет всегда равен 1. Поэтому можно расположить в начале только 1, а затем все двойки в исходной строке.

Одиннадцать раз символы ’11’ превратятся в ‘3’. Тогда 11 * 3 = 33. Останутся цифры ‘122222’. Их сумма равна 11.

В ответе получается 33 + 11 = 44.

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

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

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

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

Известно, что начальная строка начиналась с нуля, а далее содержала только единицы и двойки. После выполнения данной программы получилась строка, содержащая 40 единиц и 64 двойки. Сколько двоек было в исходной строке ?

Посмотрим, во что превращается 1:

Посмотрим, во что превращается 2:

Т.е. в окончательном результате двойки могли возникнуть только из 1. Двоек получается в два раза больше, чем было изначально единиц.

Получается, что изначальное количество единиц равно 64 / 2 = 32. Эти 32 единицы так же принесли 32 единицы. Всего 40 единиц стало. Значит, ещё 8 единиц получилось в результате преобразования 02 -> 10. Т.е. двоек будет 8.

Теперь попробуем решить задачу с помощью программы. Здесь неизвестно количество единиц и двоек. Поэтому придётся создавать вложенные циклы. Предположим, что количество единиц и двоек меньше 100, чтобы программа отработала за адекватное время.

for i in range(1, 100): for j in range(1, 100): s = '0' + '1'*i + '2'*j while ('01' in s) or ('02' in s): s = s.replace('01', '2202', 1) s = s.replace('02', '10', 1) if s.count('1')==40 and s.count('2')==64: print(j)

Получается количество двоек равно восьми.

Решим задачу про Робота, которая в последнее время редко встречается на экзамене по информатике.

Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости, состоит из 8 команд. Четыре команды — это команды-приказы:

вверх вниз влево вправо

При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответственно: вверх , вниз , влево , вправо .

Четыре команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ:

сверху свободно снизу свободно слева свободно справа свободно
Цикл ПОКА условие последовательность команд КОНЕЦ ПОКА выполняется, пока условие истинно. В конструкции ЕСЛИ условие ТО команда1 ИНАЧЕ команда2 КОНЕЦ ЕСЛИ выполняется команда1 (если условие истинно) или команда2 (если условие ложно)

В конструкциях ПОКА и ЕСЛИ условие может содержать команды проверки, а также слова И, ИЛИ, НЕ, обозначающие логические операции.

Если РОБОТ начнёт движение в сторону находящейся рядом с ним стены, то он разрушится и программа прервётся.

Сколько клеток лабиринта соответствуют требованию, что, начав движение в ней и выполнив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка F6)?

НАЧАЛО ПОКА снизу свободно ИЛИ справа свободно ПОКА справа свободно вправо КОНЕЦ ПОКА ЕСЛИ снизу свободнo ТО вниз КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ

Проанализируем внимательно программу для Робота.

В программе есть главный цикл, внутри цикла проверяется сначала возможность двигаться вправо. Если есть такая возможность, робот будет двигаться до упора с помощью ещё одного цикла. Потом после того как больше нет возможности двигаться вправо, с помощью основного цикла и записанного условия будет перемещаться вниз, пока есть такая возможность.

Если нет возможности двигаться ни вправо, ни вниз, то Робот завершает программу.

Поняв этот алгоритм не сложно отметить те клетки, стартовав с которых, Робот остановится на клетке F6.

ЕГЭ по информатике 2021 - задание 12 (клетки лабиринта соответствуют требованию)

Ещё раз, Робот до упору будет двигаться вправо, потом до упору вниз, насколько это возможно. Вот алгоритм в двух словах.

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

Количество клеток, удовлетворяющие условию будет 21.

12 Задание из ЕГЭ по информатике 2021 выглядит обычно объёмным, но на деле описываются обычные конструкции (Циклы и условия), которые есть в большинстве языках программирования.

Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнить команду сместиться на(a, b), где a, b — целые числа. Эта команда перемещает Чертёжника из точки с координатами (x, y) в точку с координатами (x + a, y + b).

Например, если Чертёжник находится в точке с координатами (4, 2), то команда сместиться на(2, -3) переместит Чертёжника в точку (6, -1).

ПОВТОРИ число РАЗ 
последовательность команд
КОНЕЦ ПОВТОРИ

означает, что последовательность команд будет выполнена указанное число раз (число должно быть натуральным).

Чертёжнику был дан для исполнения следующий алгоритм (число повторений и величины смещения в первой из повторяемых команд неизвестны):

НАЧАЛО сместиться на(8, -60) ПОВТОРИ . РАЗ сместиться на(. . ) сместиться на(4, -6) КОНЕЦ ПОВТОРИ сместиться на(-35, -3) КОНЕЦ

В результате выполнения этого алгоритма Чертёжник возвращается в исходную точку. Какое наибольшие число повторений могло быть указано в конструкции «ПОВТОРИ . РАЗ» ?

Эта задача похоже на задачу Кузнечик, которую рассматривали в 5 задании.

Напишем для переменной x уравнение.

8 + n * x + n * 4 — 35 = 0

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

n — положительное целое число, количество повторений.

x — целое число, смещение по координате x.

n * x + n * 4 = 27
n * ( x + 4 ) = 27

Нужно подобрать x и n, чтобы равенство было верным.

Число n может быть 27, 9, 3, 1. Нам нужно выбрать число n, как можно больше.

Проверим число 27! Тогда выражение x + 4 = 1 => x = -3. Теперь нужно проверить это число для координаты y.

-60 + n * yn * 6 — 3 = 0
27 * y27 * 6 = 63
27 * ( y — 6 ) = 63

Видим, что нельзя подобрать такое целое число для 27, чтобы при умножении получалось 63.

Проверим число 9! Тогда выражение x + 4 = 3 => x = -1. Теперь нужно проверить это число для координаты y.

-60 + n * yn * 6 — 3 = 0
9 * y9 * 6 = 63
9 * ( y — 6 ) = 63

Видим, что можно подобрать такое целое число для 9, чтобы при умножении получалось 63. Это число 7. Значит, y — 6 = 7 => y = 13

Мы подобрали все нужные числа и нашли наибольшее число n=9.

Счастливых экзаменов по информатике!

Информатика ЕГЭ 12 задание разбор

12-е задание: «Алгоритмы с циклами и условиями»
Уровень сложности — повышенный,
Требуется использование специализированного программного обеспечения — нет,
Максимальный балл — 1,
Примерное время выполнения — 4 минуты.

Проверяемые элементы содержания: Умение анализировать результат исполнения алгоритма

До ЕГЭ 2021 года — это было задание № 14 ЕГЭ

Плейлист видеоразборов задания на YouTube:

Исполнитель Редактор и цепочки символов

Учимся по видео (решения разного типа программным способом):

Какая строка получится?

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

А) заменить ( v , w )
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w .

Б) нашлось ( v )
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка при этом не изменяется.

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 40 идущих подряд цифр 123? В ответе запишите полученную строку.

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

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

А) заменить ( v , w )
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w .

Б) нашлось ( v )
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка при этом не изменяется.

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 71 идущих подряд четверок цифр 1122? В ответе запишите полученную строку.

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

Ответ: 22

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

А) заменить ( v , w )
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w .

Б) нашлось ( v )
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка при этом не изменяется.

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 200 идущих подряд цифр 7? В ответе запишите полученную строку.

НАЧАЛО ПОКА нашлось (99) ИЛИ нашлось (777) ЕСЛИ нашлось (777) ТО заменить (777, 9) ИНАЧЕ заменить (99, 7) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ

12_7:

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

А) заменить ( v , w )
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w .

Б) нашлось ( v )
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка при этом не изменяется.

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 90 идущих подряд цифр 3 и в конце одной цифры 1? В ответе запишите полученную строку.

НАЧАЛО ПОКА нашлось (331) ИЛИ нашлось (166) ЕСЛИ нашлось (331) ТО заменить (331, 16) ИНАЧЕ заменить (166, 31) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ

Сколько удалено?

12_8:

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

А) заменить ( v , w )
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w .

Б) нашлось ( v )
Дана программа для исполнителя Редактор:

ПОКА нашлось (555) ИЛИ нашлось (333) ЕСЛИ нашлось (333) ТО заменить (333, 5) ИНАЧЕ заменить (555, 3) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА

Дана строка, состоящая из 500 цифр 5. Сколько пятёрок было удалено за время обработки строки по этой программе?

Ответ: 561

Чему равна сумма цифр?

12_13:

Дана программа для исполнителя Редактор:

ПОКА нашлось (555) ИЛИ нашлось (333) ЕСЛИ нашлось (555) ТО заменить (555, 3) ИНАЧЕ заменить (333, 5) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА

Дана строка, состоящая из 200 цифр 5. Чему равна сумма цифр строки, полученной после обработки по этой программе?

12_9:

На вход приведённой ниже программе поступает строка, начинающаяся с символа « > », а затем содержащая 10 цифр 1 , 20 цифр 2 и 30 цифр 3 , расположенных в произвольном порядке.
Определите сумму числовых значений цифр строки, получившейся в результате выполнения программы.

Так, например, если результат работы программы представлял бы собой строку, состоящую из 50 цифр 4, то верным ответом было бы число 200.

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

Ответ: 110

Сколько цифр … в конечной строке?

12_10:

Дана программа для исполнителя Редактор:

НАЧАЛО ПОКА нашлось (12) ИЛИ нашлось (1) ЕСЛИ нашлось (12) ТО заменить (12, 2221) ИНАЧЕ заменить (1,222222) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей одной единицы и 51 стоящих справа от неё цифр 2? В ответ, запишите, сколько цифр 2 будет в конечной строке.

Сколько цифр … в исходной строке?

12_14:

Дана программа для Редактора:

ПОКА нашлось(01) ИЛИ нашлось(02) ИЛИ нашлось(03) заменить(01, 30) заменить(02, 3103) заменить(03, 1201) КОНЕЦ ПОКА

Известно, что исходная строка начиналась с нуля, а далее содержала только единицы, двойки и тройки. После выполнения данной программы получилась строка, содержащая 31 единицу, 24 двойки и 46 троек. Сколько троек было в исходной строке?

Укажите минимальную возможную длину входной строки

12_11:

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

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

Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор.

Дана программа для Редактора:

ПОКА нашлось (555) ИЛИ нашлось (888) заменить (555, 8) заменить (888, 55) КОНЕЦ ПОКА

Известно, что начальная строка состоит более чем из 300 цифр 5 и не содержит других символов. В ходе работы алгоритма получилась строка, содержащая одну цифру 5 и одну цифру 8. Укажите минимальную возможную длину входной строки.

Какое наибольшее / наименьшее количество … могло быть в исходной строке?

12_12:

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

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

Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор.

К исходной строке, содержащей не более 100 троек и не содержащей других символов, применили приведённую ниже программу:

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

В результате получилась строка 43.
Какое наибольшее количество троек могло быть в исходной строке?

Решение заданий прошлых лет (до 2021)

Исполнитель Робот

12_1:

Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости, включает 4 команды-приказа и 4 команды проверки условия.
Команды-приказы:

вверх вниз влево вправо

Другие четыре команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ:

сверху свободно снизу свободно слева свободно справа свободно

Сколько клеток приведенного лабиринта соответствуют требованию, что, начав движение в ней и выполнив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка F6)?

НАЧАЛО ПОКА < снизу свободно ИЛИ справа свободно > ЕСЛИ < справа свободно > ТО вправо КОНЕЦ ЕСЛИ ПОКА < снизу свободно > вниз КОНЕЦ ПОКА КОНЕЦ ПОКА КОНЕЦ

егэ 2018 информатика тренажер

Ответ: 21

12_2:

Сколько клеток лабиринта соответствуют требованию, что, начав движение в ней и выполнив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка F6)?

НАЧАЛО ПОКА < справа свободно ИЛИ снизу свободно >ПОКА < снизу свободно >вниз КОНЕЦ ПОКА ПОКА < справа свободно >вправо КОНЕЦ ПОКА КОНЕЦ ПОКА КОНЕЦ

решение 12 задания егэ, робот

Ответ: 19

Исполнитель Чертежник

12 задание. Демоверсия ЕГЭ 2018 информатика:

Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду сместиться на (a, b), где a, b – целые числа. Эта команда перемещает Чертёжника из точки с координатами (x,y) в точку с координатами (x + a, y + b).

Например, если Чертёжник находится в точке с координатами (4, 2), то команда сместиться на (2, −3) переместит Чертёжника в точку (6, −1).

ПОВТОРИ число РАЗ последовательность команд КОНЕЦ ПОВТОРИ

означает, что последовательность команд будет выполнена указанное число раз (число должно быть натуральным).

Чертёжнику был дан для исполнения следующий алгоритм (число повторений и величины смещения в первой из повторяемых команд неизвестны):

НАЧАЛО сместиться на (4, 6) ПОВТОРИ … РАЗ сместиться на (…, …) сместиться на (4, -6) КОНЕЦ ПОВТОРИ сместиться на (-28, -22) КОНЕЦ

В результате выполнения этого алгоритма Чертёжник возвращается в исходную точку.
Какое наибольшее число повторений могло быть указано в конструкции «ПОВТОРИ … РАЗ»?

Ответ: 8

ЗаPython’ил ЕГЭ на сотку или почему Python поможет на ЕГЭ

Доброго времени суток каждому жителю Хабрвилля! Давненько я не писал статей! Пора это исправить!

В сегодняшней статье поговорим о насущной для многих выпускников школ теме — ЕГЭ. Да-да-да! Я знаю, что Хабр — это сообщество разработчиков, а не начинающих айтишников, но сейчас ребятам как никогда нужна поддержка именно сообщества. Ребят опять посадили на дистант. Пока не ясно на какой период, но уже сейчас можно сказать, что ЕГЭ по информатике будет на компьютерах и его можно зарешать при помощи языка Python.

Вот я и подумал, чтобы не получилось как в песне, стоит этим заняться. Я расскажу про все задачи первой части и их решения на примере демо варианта ЕГЭ за октябрь.

Всех желающих — приглашаю ниже!

Быстрый перевод из системы в систему

В Python есть интересные функции bin() , oct() и hex() . Работают данные функции очень просто:

bin(156) #Выводит '0b10011100' oct(156) #Выводит '0o234' hex(156) #Выводит '0x9c'

Вывод в интерпретационном режиме

Как вы видите, выводится строка, где 0b — означает, что число далее в двоичной системе счисления, 0o — в восьмеричной, а 0x — в шестнадцатеричной. Но это стандартные системы, а есть и необычные.

Давайте посмотрим и на них:

n = int(input()) #Вводим целое число b = '' #Формируем пустую строку while n > 0: #Пока число не ноль b = str(n % 2) + b #Остатот от деления нужной системы (в нашем сл записываем слева n = n // 2 #Целочисленное деление print(b) #Вывод

Данная программа будет работать при переводе из десятичной системы счисления в любую до 9, так как у нас нет букв. Давайте добавим буквы:

n = int(input()) #Вводим целое число b = '' #Формируем пустую строку while n > 0: #Пока число не ноль if (n % 21) > 9: #Если остаток от деления больше 9. if n % 21 == 10: #. и равен 10. b = 'A' + b #. запишем слева A elif n % 21 == 11:#. и равен 11. b = 'B' + b#. запишем слева B ''' И так далее, пока не дойдём до системы счисления -1 (я переводил в 21-ную систему и шёл до 20) ''' elif n % 21 == 11: b = 'B' + b elif n % 21 == 12: b = 'C' + b elif n % 21 == 13: b = 'D' + b elif n % 21 == 14: b = 'E' + b elif n % 21 == 15: b = 'F' + b elif n % 21 == 16: b = 'G' + b elif n % 21 == 17: b = 'H' + b elif n % 21 == 18: b = 'I' + b elif n % 21 == 19: b = 'J' + b elif n % 21 == 20: b = 'K' + b else: #Иначе (остаток меньше 10) b = str(n % 21) + b #Остатот от деления записываем слева n = n // 21 #Целочисленное деление print(b) #Вывод

Способ объёмен, но понятен. Теперь давайте используем тот же функцию перевода из любой системы счисления в любую:

def convert_base(num, to_base=10, from_base=10): # Перевод в десятичную систему if isinstance(num, str): # Если число - строка, то . n = int(num, from_base) # . переводим его в нужную систему счисления else: # Если же ввели число, то . n = int(num) # . просто воспринять его как число # Перевод десятичной в 'to_base' систему alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" # Берём алфавит if n < to_base: # Если число меньше системы счисления в которую переводить. return alphabet[n] # . вернуть значения номера в алфавите (остаток от деления) else: # Иначе. return convert_base(n // to_base, to_base) + alphabet[n % to_base] # . рекурсивно обратиться к функии нахождения остатка

Вызвав функцию вывода print(convert_base(156, 16, 10)) мы переведём 156 из 10 в 16 систему счисления, а введя print(convert_base('23', 21, 4)) переведёт 23 из 4-ичной в 21-ичную систему (ответ: B).

Задача 2

Все задания беру из первого октябрьского варианта (он же вариант № 9325894) с сайта Решу.ЕГЭ.

Решение данной задачи совсем простое: банальный перебор.

print('y', 'x', 'z', 'F') #Напечатаем заголовки таблицы for y in range(2): #Берём все переменные и меняем их в циклах '0' и '1' for x in range(2): for z in range(2): for w in range(2): F = ((not x or y) == (not z or w)) or (x and w) #Записываем функцию print(x, y, z, F) #Выводим результат

Нам вывелась вся таблица истинности (1 = True, 0 = False). Но это не очень удобно. Обратите внимание, что в задании, функция равно 0, так и давайте подправим код:

print('y', 'x', 'z', 'F') #Напечатаем заголовки таблицы for y in range(2): #Берём все переменные и меняем их в циклах '0' и '1' for x in range(2): for z in range(2): for w in range(2): F = ((not x or y) == (not z or w)) or (x and w) #Записываем функцию if not F: print(x, y, z, F) #Выводим результат

Далее - простой анализ.

Задача 5

Данная задача легко решается простой последовательностью действий в интерпретационном режиме:

Задача 6

Перепечатали и получили ответ:

s = 0 k = 1 while s < 66: k += 3 s += k print(k)

Задача 12

В очередной раз, просто заменим слова на код:

a = '9' * 1000 while '999' in a or '888' in a: if '888' in a: a = a.replace('888', '9', 1) else: a = a.replace('999', '8', 1) print(a)

Задача 14

Компьютер железный, он всё посчитает:

a = 4 ** 2020 + 2 ** 2017 - 15 k = 0 while a > 0: if a % 2 == 1: k += 1 a = a // 2 print(k)

Задача 16

Опять же, просто дублируем программу в python:

def F(n): if n > 0: F(n // 4) print(n) F (n - 1) print(F(5))

Задача 17

Задача с файлом. Самое сложное - достать данные из файла. Но где наша не пропадала?!

with open("17.txt", "r") as f: #Открыли файл 17.txt для чтения text = f.read() #В переменную text запихнули строку целиком a = text.split("\n") #Разбили строку энтерами (\n - знак перехода на новую строку) k = 0 #Стандартно обнуляем количество m = -20001 #Так как у нас сумма 2-ух чисел и минимальное равно -10000, то минимум по условию равен -20000, поэтому. for i in range(len(a)): #Обходим все элементы массива if (int(a[i - 1]) % 3 == 0) or (int(a[i]) % 3 == 0): #Условное условие k += 1 #Счётчик if int(a[i - 1]) + int(a[i]) > m: #Нахождение минимума m = int(a[i - 1]) + int(a[i]) print(k, m) #Вывод

Немного пояснений. Функция with() открывает файл считывает данные при помощи функции read() и закрывает файл. В остальном - задача стандартна.

Задача 19, 20 и 21

Все три задачи - задачи на рекурсию. Задачи идентичны, а вопросы разные. Итак, первая задача:

Пишем рекурсивную функцию и цикл перебора S:

def f(x, y, p): #Рекурсивная функция if x + y >= 69 or p > 3: #Условия завершения игры return p == 3 return f(x + 1, y, p + 1) or f(x, y + 1, p + 1) or\ f(x * 2, y, p + 1) or f(x, y * 3, p + 1) #Варианты действий for s in range (1, 58 + 1): #Перебор S if f(10, s, 1): #Начали с 10 камней print(s) break

Немного пояснений. В рекурсивной функции существует 3 переменные x - число камней в первой куче, y - число камней во второй куче, p - позиция. Позиция рассчитывается по таблице:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *