Contexte
Inspiré par cette question Unix.SE (et bien sûr ma propre réponse ).
Lorsqu'une adresse IP est spécifiée pour une interface, elle est souvent donnée sous cette forme décimale à points:
a.b.c.d e.f.g.h
où a.b.c.d
est l'adresse réelle et e.f.g.h
le masque de réseau.
Le masque de réseau, lorsqu'il est représenté en binaire, est fondamentalement un tas de 1
bits suivi d'un tas de 0
bits. Lorsque le masque de réseau est binaire ET par rapport à l'adresse IP donnée, le résultat sera la partie réseau de l'adresse, ou simplement l' adresse réseau . Cela sera programmé dans la table de routage de l'hôte afin que l'hôte sache envoyer tout ce qui est destiné à ce réseau via cette interface.
L'adresse de diffusion pour un réseau est dérivée en prenant l'adresse réseau (ci-dessus) et en définissant tous les bits d'hôte sur 1. L'adresse de diffusion est utilisée pour envoyer à toutes les adresses du réseau donné.
Défi
Étant donné une adresse IP décimale en pointillés et un masque de réseau valide en entrée, fournissez l'adresse réseau et l'adresse de diffusion en sortie, également au format décimal en pointillés.
- L'entrée doit être adresse et masque sous la forme de deux chaînes au format décimal pointé. Vous pouvez passer ceci comme 2 chaînes distinctes, comme une liste ou un tableau de 2 éléments de chaîne ou une seule chaîne avec l'adresse et le masque séparés par un séparateur sensible.
- Le format de sortie est soumis aux mêmes contraintes que le format d'entrée.
Exemples
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
?