Antecedentes
Inspirado por esta pregunta de Unix.SE (y, por supuesto, mi propia respuesta ).
Cuando se especifica una dirección IP para una interfaz, a menudo se proporciona en esta forma decimal con puntos:
a.b.c.d e.f.g.h
donde a.b.c.d
está la dirección real y e.f.g.h
es la máscara de red.
La máscara de red, cuando se representa en binario, es básicamente un montón de 1
bits seguidos de un montón de 0
bits. Cuando la máscara de red se ANDA bit a bit contra la dirección IP dada, el resultado será la porción de red de la dirección, o simplemente la dirección de red . Esto se programará en la tabla de rutas del host para que el host sepa enviar todo lo destinado a esta red a través de esta interfaz.
La dirección de transmisión para una red se obtiene tomando la dirección de red (desde arriba) y configurando todos los bits de host en 1. La dirección de transmisión se usa para enviar a todas las direcciones dentro de la red dada.
Desafío
Dada una dirección IP decimal con puntos y una máscara de red válida como entrada, proporcione la dirección de red y la dirección de difusión como salida, también en formato decimal con puntos.
- La entrada debe ser dirección y máscara como dos cadenas en formato decimal con puntos. Puede pasar esto como 2 cadenas separadas, como una lista o matriz de 2 elementos de cadena o una sola cadena con la dirección y la máscara separadas por algún separador sensible.
- El formato de salida está sujeto a las mismas restricciones que el formato de entrada.
Ejemplos
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
en él.
10.24.0.0 10.27.255.255
?