Hintergrund
Inspiriert von dieser Unix.SE-Frage (und natürlich meiner eigenen Antwort ).
Wenn eine IP-Adresse für eine Schnittstelle angegeben wird, wird diese häufig in dieser Punkt-Dezimal-Form angegeben:
a.b.c.d e.f.g.h
Wo a.b.c.d
ist die tatsächliche Adresse und e.f.g.h
ist die Netzmaske.
Die Netzmaske ist, wenn sie binär dargestellt wird, im Grunde eine Reihe von 1
Bits, gefolgt von einer Reihe von 0
Bits. Wenn die Netzmaske gegen die angegebene IP-Adresse bitweise UND-verknüpft ist, ist das Ergebnis der Netzwerkteil der Adresse oder einfach die Netzwerkadresse . Dies wird in die Routentabelle des Hosts programmiert, damit der Host weiß, dass alles, was für dieses Netzwerk bestimmt ist, über diese Schnittstelle gesendet wird.
Die Broadcast-Adresse für ein Netzwerk wird abgeleitet, indem die Netzwerkadresse (von oben) genommen und alle Host-Bits auf 1 gesetzt werden. Die Broadcast-Adresse wird zum Senden an alle Adressen innerhalb des angegebenen Netzwerks verwendet.
Herausforderung
Geben Sie bei einer IP-Adresse mit gepunkteter Dezimalstelle und einer gültigen Netzmaske als Eingabe die Netzwerkadresse und die Broadcast-Adresse als Ausgabe an, ebenfalls im Punkt-Dezimal-Format.
- Die Eingabe muss Adresse und Maske als zwei Zeichenfolgen im Punkt-Dezimal-Format sein. Sie können dies als 2 separate Zeichenfolgen, als Liste oder Array von 2 Zeichenfolgenelementen oder als einzelne Zeichenfolge übergeben, wobei Adresse und Maske durch ein sinnvolles Trennzeichen getrennt sind.
- Das Ausgabeformat unterliegt denselben Einschränkungen wie das Eingabeformat.
Beispiele
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
quelle
252
.10.24.0.0 10.27.255.255
?Antworten:
JavaScript (ES6), 92 Byte
Erläuterung
Prüfung
Show code snippet
quelle
MATL , 47 Bytes
Diese Antwort verwendet die aktuelle Version (4.0.0) der Sprache.
Beispiel
Erläuterung
quelle
Pyth,
4442 BytesProbieren Sie es online aus. Testsuite.
Erwartet die Eingabe als Array wie
["10.25.30.40", "255.252.0.0"]
.quelle
PHP, 126 Bytes
Mit Eingabe in $ n:
Hexdump:
Und eine besser lesbare Version:
preg_filter
erfordert eine einzelne Anweisung im Ersetzungsmuster, wenn dase
Flag verwendet wird, daher füge ich das Ergebnis der Berechnungen an den 5. und höheren Wert von $ a an, da diese niemals wiederverwendet werden.quelle
Perl,
9085 Bytesbeinhaltet +6 für
-pF/\D/
Verwendungszweck:
Besser lesbar:
Das
-F/\D/
teilt die Eingabe auf nicht-Ziffern auf und speichert sie in@F
.quelle
Faktor 103 Bytes
Nett.
Ungolfed:
quelle
PHP , 74 Bytes
Als eigenständige Eingabe erfolgt die Eingabe über die Befehlszeile:
Probieren Sie es online aus!
Oder als Funktion 80 Bytes :
Probieren Sie es online aus!
Ungolfed
PHP hat nette (wenn auch mit langen Funktionsnamen) integrierte Funktionen, um IPv4-Punktzeichenfolgen in Binärdateien und zurück zu verarbeiten.
Ausgabe
quelle