Тип 13 № 2203 

Организация компьютерных сетей. Адресация. Восстановить ip-адрес
i
Петя записал IP-адрес школьного сервера на листке бумаги и положил его в карман куртки. Петина мама случайно постирала куртку вместе с запиской. После стирки Петя обнаружил в кармане четыре обрывка с фрагментами IP-адреса. Эти фрагменты обозначены буквами А, Б, В и Г. Восстановите IP-адрес. В ответе укажите последовательность букв, обозначающих фрагменты, в порядке, соответствующем IP-адресу.
Спрятать решениеРешение. IP-адрес представляет собой числа, разъединенные точками, причем числа эти не больше 255.
Посмотрим внимательнее на данные фрагменты: под буквой А мы видим «.64». Число, на которое указывает этот фрагмент, начинается с 64. Поскольку числа в IP-адресе не могут быть больше 255, мы не можем добавить в конце этого числа еще один разряд, а фрагментов, начинающихся с точки, больше нет. Следовательно, этот фрагмент — последний.
Посмотрим на фрагмент под буквой Г. В нем стоит число без точек, значит, это либо последний фрагмент, либо первый. Место последнего фрагмента уже занято, значит, фрагмент Г на первом месте.
В конце фрагмента В — число 133, отделенное точкой. Поскольку в IP-адресе не может быть числа, большего 255, то за фрагментом В должен следовать фрагмент, начинающийся с точки. Значит, фрагмент В идет перед фрагментом А.
Итого получаем ГБВА.
Ответ: ГБВА.
Приведём решение Данила Шарлова на языке Python.
from ipaddress import ip_address
from itertools import permutations
ip = {'.64':'А','3.13':'Б','3.133':'В','20':'Г'}
for i in permutations(ip):
try:
print(ip_address(''.join(i)), ''.join([ip[i[ii]] for ii in range(4)]))
except:
pass
Ответ: ГБВА