Готовясь к экзамену многие хотят научиться решать 13 задание (ЕГЭ информатика) на питоне. Я уже разбирал основные типажи задач на организацию компьютерных сетей в статье:
Эта статья посвящена менее ожидаемым на ЕГЭ задачам, но все же важным для общего понимания темы.
Разбор 13 задания ЕГЭ информатика
(№7024 с сайта К.Ю. Пoлякoвa (М. Ишимов)) В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Для узла с IP-адресом 120.216.74.153 адрес сети равен 120.216.0.0. Чему равно наибольшее количество возможных адресов в этой сети?
Чтобы создать сеть нам нужен адрес сети (или узла, входящего в данную сеть) и маска. Заметим, что в этой задаче маска у нас не дана. В информатике чаще всего, когда у нас нет каких-то данных, мы начинаем перебирать их возможные варианты в цикле.
Будем перебивать переменную mask как число от 0 до 32, так как маску можно задавать количеством единиц. На примере ниже в получившемся адресе сети через / записано количество единиц в маске.
И если посмотреть как будет выглядеть 32-битная запись маски, то действительно в ней 21 единица.
Тогда на данный момент код задачи, которую мы решаем, будет выглядеть следующим образом:
Мы уже знакомы c функциями ip_network и ip_address, но для этой задачи нам потребуется метод num_addressws, который позволит узнать, сколько отдельных адресов в сети. Посмотрим, как он работает.
Мы можем найти сеть из условия задачи и посмотреть чему равно наибольшее количество возможных адресов в этой сети.
Ответом будет 524288. Если мы не хотим высматривать нужную нам сеть самостоятельно, то можно внести дополнительную строку с проверкой через метод network_address в наш код и сразу получить релевантный вывод.
Типаж: 13 задание ЕГЭ информатика ip
(№ 7034 с сайта К.Ю. Пoлякoвa) (М. Ишимов) В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 135.221.128.0 и маской сети 255.255.128.0. Определите минимальную сумму единиц в двоичной записи IP-адреса в этой сети.
Идея решения достаточно простая: создадим сеть, будем перебирать в ней все возможные IP-адреса и выберем из них тот, в котором минимальная сумма единиц.
Перед циклом зададим переменную mn для поиска минимального количества, чтобы программе было с чем сравнивать при первом проходе цикла. Так как максимальное количество единиц в IP-адресе не превышает 32, то можно взять любое число, большее этого значения.
Далее в цикле будем каждый ip адрес переводить в двоичный вид и считать в нем количество единиц с помощью метода count.
В переменную mn каждый раз будет записываться минимальное их всех найденных на данный момент значений.
Типаж: маски ЕГЭ информатика 13 задание
(№ 7280 с сайта К.Ю. Пoлякoвa) В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Узлы с IP-адресами 176.213.225.119 и 176.213.195.58 находятся в одной сети. Укажите наибольшее возможное значение третьего слева байта маски этой сети. Ответ запишите в виде десятичного числа.
На этот раз сеть у нас задана двумя узлами, находящимися в ней. Создавать сеть по IP-адресу узла мы умеем, для этого воспользуемся функцией ip_network. И так как мы создаем сеть не по ее IP-адресу, а по адресу узла, то в конце дописываем 0.
Так как узла два, то и сети мы создадим две.
Далее нам надо будет осуществить проверку действительно ли это одна и та же сеть и если данное условие выполняется, то можно выводить маску.
При таком выводе маске удобно отвечать на вопрос о количестве единиц/нулей в маске, но для точного определения байта маски лучше воспользоваться методом netmask. Так как есть у нас одна, то не имеет значение применять этот метод к сети net_1 или net_2.
Просмотрев третьи байты масок находим наибольшее возможное значение третьего слева байта маски.
(№ 7280 с сайта К.Ю. Пoлякoвa) В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Узлы с IP-адресами 193.45.192.104 и 193.45.206.210 находятся в разных сетях. Укажите наименьшее возможное значение третьего слева байта маски этой сети. Ответ запишите в виде десятичного числа.
Теперь по условию задачи узлы у нас находятся в разных сетях. Начало решения такое же как в предыдущей задаче.
Далее встает вопрос – как указать, что узлы находятся в разных сетях? Фактически здесь нам нужна операция инверсии при логическом рассуждении. Если в одной сети мы указывали как == , то обратной операцией будет != .
При таком выводе маске удобно отвечать на вопрос о количестве единиц/нулей в маске, но для точного определения байта маски лучше воспользоваться методом netmask.
Как видно, результат одинаковый, и ответом на данную задачу является число 248.