6. Тип 13 № 2230 
Организация компьютерных сетей. Адресация. Восстановить ip-адрес
i
На месте преступления были обнаружены четыре обрывка бумаги. Следствие установило, что на них записаны фрагменты одного IP-адреса. Криминалисты обозначили эти фрагменты буквами А, Б, В и Г. Восстановите IP-адрес. В ответе укажите последовательность букв, обозначающих фрагменты, в порядке, соответствующем IP-адресу. Если будет несколько вариантов решения, запишите их все через запятую.
Решение. IP-адрес представляет собой числа, разъединенные точками, причем числа эти не больше 255.
Посмотрим внимательнее на данные фрагменты: под буквой Б мы видим «1.96». В фрагменте присутствует часть некоторого числа, начинающегося с 96. Поскольку числа в IP-адресе не могут быть больше 255, мы не можем добавить в конце этого числа еще один разряд, а фрагментов, начинающихся с точки, больше нет. Следовательно, этот фрагмент — последний.
Посмотрим на фрагмент под буквой Г. В нем стоит число без точек, значит, это либо последний фрагмент, либо первый. Место последнего фрагмента уже занято, значит, фрагмент Г на первом месте.
В начале фрагмента А — число 24, отделенное точкой. Поскольку в IP-адресе не может быть числа, большего 255, то перед фрагментом А должен следовать фрагмент, кончающийся либо точкой, либо одной цифрой, меньшей трех, после точки. Значит, фрагмент А идет после фрагмента В.
Ответ: ГВАБ.
Приведём решение Данила Шарлова на языке Python.
from ipaddress import ip_address
from itertools import permutations
ip = {'24.12':'А','1.96':'Б','4.2':'В','17':'Г'}
for i in permutations(ip):
try:
print(ip_address(''.join(i)), ''.join([ip[i[ii]] for ii in range(4)]))
except:
pass
Ответ: ГВАБ