Задание выполняется с использованием прилагаемых файлов.
Программист Саша купил таблицу с IP-адресами кодировки IPv4 из случайных сетей, но, взглянув на неё, он сразу увидел, что некоторые IP-адреса не могут существовать, так как в одном байте не может содержаться число, большее чем
(так, например, адрес
может существовать, а вот
или
не могут). Вам требуется найти номера сетей, в которой содержится больше всего и меньше всего настоящих адресов. Для вашего доступа предоставлены последние
разных сетей, в каждой из которых дано по
IP-адресов. Откройте файл электронной таблицы, содержащей IP-адреса и номера сетей. Номера сетей даны на отрезке
.
Требуется найти номера таких сетей, содержащие максимальное и минимальное количество реальных IP-адресов и сложить их. В ответе запишите сумму искомых значений.
Перенесем все данные из таблицы в текстовый документ
f = open(’1.txt’)
все строки первого столбца
все строки второго столбца
...
n = 11 # всего сетей
m = 50 # всего адресов в сети
minim, maxim = 100000000, -1
ind_1, ind_2 = -1, -1
for i in range(n): #всего n сетей
count = 0 # счетчик неправильных сетей
for j in range(m): # m ip адресов в каждой сети
# разбиваем каждый ip адрес на числа
a = [int(x) for x in f.readline().split(’.’)]
for x in a: # проверяем каждое из чисел массива
if x > 255:
count += 1
break
if count > maxim: # сохраняем номер сети с максимальным количество ошибок
maxim = count
ind_1 = i + 1 # индексация в питоне с 0, не забываем добавить 1
if count < minim: # сохраняем номер сети с минимальным количество ошибок
minim = count
ind_2 = i + 1 # индексация в питоне с 0, не забываем добавить 1
# В сети, где меньше всего ошибок больше всего правильных адресов --- ind_2
# В сети, где больше всего ошибок меньше всего правильных адресов --- ind_1
print(ind_1 + ind_2)