"10.0.0.6".
Блок адресов записывается как "адрес/k", где k от 0 до 32. Он покрывает все адреса, у которых первые k бит совпадают с первыми k битами указанного адреса, то есть ровно 2^(32-k) адресов. Например, "10.0.0.8/30" покрывает адреса с 10.0.0.8 по 10.0.0.11.
Настраивая брандмауэр, нужно открыть ровно count адресов подряд, начиная с first_ip, — не больше и не меньше. Подберите для этого как можно меньше блоков и верните их записи. Ни один блок не должен захватывать адреса вне нужного диапазона, и блоки не должны пересекаться.
В каждой записи адрес — это наименьший адрес блока. Блоки можно вернуть в любом порядке.first_ip='10.0.0.6', count=6 → ['10.0.0.6/31', '10.0.0.8/30']
Нужны адреса с 10.0.0.6 по 10.0.0.11. Блок /31 закрывает .6 и .7, блок /30 — с .8 по .11. Меньше двух блоков не получится.
first_ip='192.168.0.0', count=256 → ['192.168.0.0/24']
Начало выровнено и количество — степень двойки, так что хватает одного блока /24.
first_ip='172.16.5.255', count=3 → ['172.16.5.255/32', '172.16.6.0/31']
first_ip — корректный IPv4-адрес вида "a.b.c.d", 0 ≤ a, b, c, d ≤ 255, без ведущих нулейcount ≤ 2²⁰first_ip + count - 1 не выходит за 255.255.255.255first_ip='10.0.0.6', count=6
['10.0.0.6/31', '10.0.0.8/30']
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 135 тестов на сервере, включая скрытые.