Тип 13 № 2223 

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