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
la source
252
.10.24.0.0 10.27.255.255
?Réponses:
JavaScript (ES6), 92 octets
Explication
Tester
Afficher l'extrait de code
la source
MATL , 47 octets
Cette réponse utilise la version actuelle (4.0.0) de la langue.
Exemple
Explication
la source
Pyth,
4442 octetsEssayez-le en ligne. Suite de tests.
Attend l'entrée comme un tableau, comme
["10.25.30.40", "255.252.0.0"]
.la source
PHP, 126 octets
Avec entrée en $ n:
Hexdump:
Et une version plus lisible:
preg_filter
nécessite une seule instruction dans le modèle de remplacement lors de l'utilisation due
drapeau, donc j'ajoute le résultat des calculs à la 5e et aux valeurs supérieures de $ a, car celles-ci ne sont jamais réutilisées.la source
Perl,
9085 octetscomprend +6 pour
-pF/\D/
Usage:
Plus lisible:
Le
-F/\D/
divise l'entrée sur des non-chiffres et la stocke@F
.la source
Facteur, 103 octets
Agréable.
Non golfé:
la source
PHP , 74 octets
En tant que autonome, l'entrée se fait via la ligne de commande:
Essayez-le en ligne!
Ou en fonction, 80 octets :
Essayez-le en ligne!
Non golfé
PHP a de jolis (bien qu'avec des noms de fonction longs) intégrés pour gérer la chaîne pointée IPv4 en binaire et inversement.
Production
la source