Фон
Вдохновлен этим вопросом Unix.SE (и, конечно, моим собственным ответом ).
Когда для интерфейса указывается IP-адрес, он часто задается в этой десятичной форме:
a.b.c.d e.f.g.h
где a.b.c.d
фактический адрес и e.f.g.h
маска сети.
Маска сети, представленная в двоичном виде, представляет собой набор 1
битов, за которыми следует набор 0
битов. Когда сетевая маска побитово И сравнивается с данным IP-адресом, результатом будет сетевая часть адреса или просто сетевой адрес . Это будет запрограммировано в таблице маршрутизации хоста, чтобы хост знал, отправлять что-либо, предназначенное для этой сети, через этот интерфейс.
Широковещательный адрес для сети получается путем взятия сетевого адреса (сверху) и установки всех битов хоста в 1. Широковещательный адрес используется для отправки на все адреса в данной сети.
Вызов
Если задан десятичный пунктирный IP-адрес и действительная маска сети в качестве входных данных, укажите сетевой адрес и широковещательный адрес в качестве выходных данных, также в десятичном формате с точками.
- Входные данные должны быть адресом и маской в виде двух строк в точечно-десятичном формате. Вы можете передать это как 2 отдельные строки, как список или массив из 2 строковых элементов или одну строку с адресом и маской, разделенными некоторым разумным разделителем.
- Формат вывода подчиняется тем же ограничениям, что и формат ввода.
Примеры
Input Output
192.168.0.1 255.255.255.0 192.168.0.0 192.168.0.255
192.168.0.0 255.255.255.0 192.168.0.0 192.168.0.255
192.168.0.255 255.255.255.0 192.168.0.0 192.168.0.255
100.200.100.200 255.255.255.255 100.200.100.200 100.200.100.200
1.2.3.4 0.0.0.0 0.0.0.0 255.255.255.255
10.25.30.40 255.252.0.0 10.24.0.0 10.27.255.255
источник
252
в себе.10.24.0.0 10.27.255.255
?Ответы:
JavaScript (ES6), 92 байта
объяснение
Тестовое задание
Показать фрагмент кода
источник
MATL , 47 байт
Этот ответ использует текущую версию (4.0.0) языка.
пример
объяснение
источник
Pyth,
4442 байтаПопробуйте онлайн. Тестирование.
Ожидает ввод в виде массива, как
["10.25.30.40", "255.252.0.0"]
.источник
PHP, 126 байт
С вводом в $ n:
HexDump:
И более читаемая версия:
preg_filter
при использованииe
флага требуется один оператор в шаблоне замены , поэтому я «добавляю» результат вычислений к 5-му и более высоким значениям $ a, потому что они никогда не используются повторно.источник
Perl,
9085 байтвключает в себя +6 за
-pF/\D/
Использование:
Более читабельно:
-F/\D/
Разбивает входной сигнал на нецифровые и сохраняет его в@F
.источник
Фактор, 103 байта
Ницца.
Ungolfed:
источник
PHP , 74 байта
В качестве отдельного ввода ввод осуществляется через командную строку:
Попробуйте онлайн!
Или, как функция, 80 байтов :
Попробуйте онлайн!
Ungolfed
PHP имеет хорошие (хотя и с длинными именами) встроенные функции для обработки точечной строки IPv4 в двоичную и обратно.
Выход
источник