Условие: № 10783 (Уровень: Средний)
• Статья подготовлена командой itpy
• Полный разбор задачи в Telegram
🚩 Условие задачи:
Два узла, находящиеся в одной сети, имеют IP-адреса 121.171.5.70 и 121.171.5.107.
Укажите наименьшее возможное количество адресов в этой сети.
👩💻 Код решения:
from ipaddress import *
R = []
for mask in range(32+1):
net1 = ip_network(f'121.171.5.70/{mask}', 0)
net2 = ip_network(f'121.171.5.107/{mask}', 0)
if net1 == net2:
R.append(net1.num_addresses)
print(min(R))
👩💻 Комментарии к коду:
1. from ipaddress import *
Импорт всех функций из модуля ipaddress для работы с сетевыми адресами.
2. R = []
Создание пустого списка R, куда будут добавляться результаты.
3. Цикл for mask in range(32+1):
Для перебора возможных значений маски сети от 0 до 32 (включительно).
4. net1 = ip_network(f'121.171.5.70/{mask}', 0)
Создание объекта сети net1 с заданным IP-адресом и переменной маской подсети, с коррекцией префикса.
5. net2 = ip_network(f'121.171.5.107/{mask}', 0)
Создание объекта сети net2 с другим IP-адресом, но той же маской подсети.
6. if net1 == net2:
Условие проверки, совпадают ли сети net1 и net2.
7. R.append(net1.num_addresses)
Добавление количества адресов в сети net1 в список R.
8. print(min(R))
Вывод минимального значения количества адресов среди всех сетей, для которых условие совпадения сетей выполнилось.