Inspiriert von...
Schreiben Sie ein Programm oder eine Funktion, die zwei Zeichenfolgen als Eingabe verwendet, wobei jede eine IPv4-Adresse ist, die in gepunkteter Standardnotation ausgedrückt wird, und die Anzahl der von diesem Bereich abgedeckten IP-Adressen einschließlich der zwei eingegebenen IP-Adressen ausgibt oder zurückgibt.
- Sie dürfen keinen externen Code, keine Bibliotheken oder Dienste zum Analysieren einer IP-Adresse verwenden. (Andere Funktionen der Standardbibliothek zur Verarbeitung von Zeichenfolgen sind zulässig.)
- Alle 2 ^ 32 IP-Adressen sind gleich. Es wird nicht zwischen Rundfunk, Klasse E usw. unterschieden.
- Es gelten die normalen Code-Golf-Regeln.
Beispielsweise:
"0.0.0.0","255.255.255.255" returns 4294967296.
"255.255.255.255","0.0.0.0" also returns 4294967296.
"1.2.3.4","1.2.3.4" returns 1.
"56.57.58.59","60.61.62.63" returns 67372037.
"1","2" is invalid input. Your code may do anything you like.
Antworten:
GolfScript, 20 Bytes
Probieren Sie es online aus.
Testfälle
Wie es funktioniert
quelle
$
zu meidenabs
.~]
ist auch wirklich schlau.Python 2 - 106
Sehen Sie es hier .
Beispiel Eingabe
Beispielausgabe
quelle
def a():return reduce(lambda c,d:c*256+d,map(int,raw_input().split(".")))
ist viel kürzera=lambda:
anstattdef a():return
6 Zeichen zu speichernCJam - 15
Versuchen Sie es unter http://cjam.aditsu.net/
Danke Dennis, wow, ich weiß nicht, wie ich das Beste aus meiner eigenen Sprache herausholen kann: p
quelle
:i
(b
scheint in eine Ganzzahl umgewandelt zu werden) und eines durch Verwenden{r...}2*
vonqS/{...}/
Pure Bash, 66 Bytes
Anmerkungen:
p
, der eine IP-Adresse mit gepunkteten Dezimalstellen übergeben wird und die hexadezimale Darstellung dieser Adresse ausgibt:${1//./ }
Expansion ist ein Parameter, ersetzt.
mitder IP - Adresse übergeben
p()
printf
ist meistens selbsterklärend. Da es nur einen Formatbezeichner%02x
und vier verbleibende Argumente gibt, wird der Formatbezeichner für jedes verbleibende Argument wiederverwendet, wodurch die 2 Hexadezimalziffern jedes der 4 Oktette effektiv miteinander verkettet werden$[]
verursacht arithmetische Expansion. Wir führen eine grundlegende Subtraktion durch und ordnen der Variablen zur
${r/-}
ist eine Parametererweiterung um ein mögliches zu entfernen-
Zeichen - effektiv abs ()Ausgabe:
quelle
printf
undecho
. Sind die ein Teil vonbash
?Python 2.7 -
96919087Eine Funktion gemacht.
Verwendung:
Bearbeiten: Wurde unnötig
int()
aus derf
Funktion entfernt. Vielen Dank an IsaacgEdit2: Entfernt
LF
am Ende der Datei (dank @Rusher) und entferntmap()
auf Kosten derreduce()
Initialisierer (dank @ njzk2)quelle
,0
Parameter zu IhrerGolfScript, 27 Bytes
Beispiele:
quelle
/
anstelle von verwenden%~
.CoffeeScript -
94,92,7972Nicht golfen :
Entsprechendes JavaScript :
Probieren Sie es online aus .
quelle
I=(a)->n=0;a.split(".").forEach((x)->n<<=8;n+=parseInt x);n>>>0 R=(a,b)->1+Math.abs I(b)-I a
Math.abs
, aber ich kann mir nichts kürzeres einfallen lassen.(z>0)*z||-z
ist das Beste, was ich habe (gleiche Länge, und es braucht einen Single-Char-Eingang). Hast du etwas schlaueres als das?dc, 61 zeichen
Ich finde es ziemlich erstaunlich, dass dies überhaupt mit dc gelöst werden kann, da es keine Möglichkeit zum Parsen von Strings gibt. Der Trick ist, dass 192.168.123.185 als auf den Stapel geht
und
dXIr^*
verschiebt den Dezimalpunkt nach rechts, so viele Nachkommastellen wie es gibt, und es funktioniert sogar für .100.Subtrahieren Sie ein Zeichen, wenn die Eingabe bereits auf dem Stapel vorhanden ist.
quelle
Powershell -
1121089278 BytesIch spiele zum ersten Mal Golf. Hier geht nichts:
Golf (alt):
Golf (neu)
Ungolfed:
Verwendung
Speichern Sie als Datei (in diesem Fall getipamount.ps1) und rufen Sie dann von der Konsole aus auf
quelle
C # mit LINQ - 139 Bytes
(Ab 140 nach Anwendung von Bobs Vorschlag.)
Ungolfed ....
https://dotnetfiddle.net/XPTDlt
quelle
a.b.c.d
ist äquivalent zu(a << 24) | (b << 16) | (c << 8) | (d << 0)
ist äquivalent zu(((a << 8) << 8) << 8) + ((b << 8) << 8) + (c << 8) + d)
. Grundsätzlich nimmt jede Iteration der Aggregation die vorhandene Summe und verschiebt sie um ein Oktett nach links und fügt dann das nächste Oktett hinzu.c*256
anstelle von verwenden(c<<8)
.e-f
mite<f?f-e:e-f
und Fallenlassen derMath.Abs()
Perl, 43 Bytes
Zählen Sie den Shebang als zwei Bytes.
Beispielnutzung:
Anmerkungen
vec eval,0,32
ist ein Drop-In fürip2long
. Perl ermöglicht die Angabe von Zeichenliteralen als Ordnungszahl mit dem Präfix av
, z. B.v0
als Nullzeichen. Diese können auch miteinander verkettet werden, zum Beispielv65.66.67.68
→ABCD
. Wenn drei oder mehr Werte vorhanden sind, ist die Initiale nichtv
erforderlich. Dievec
Funktion interpretiert eine Zeichenfolge als Ganzzahl-Array, wobei jede Zelle die angegebene Anzahl von Bits aufweist (hier 32).unpack N,eval
hätte genauso gut funktioniert.quelle
JavaScript ES6 - 68 Bytes
Versuchen Sie es mit der Konsole (drücken Sie F12) von Firefox.
quelle
alert
oder verwendenconsole.log
. Konsolenausgabe ist billig.console.log
und direkter Ausgabe. Das ist Code-Golf, es geht nicht darum, sauberen Code zu machen.Python 2.7, 104 Bytes
quelle
Perl, 72 Bytes
Verwendung:
Das ist schon länger als das Perl-Programm von primo , also nicht allzu interessant.
Perl, 119 Byte, für veraltetes IP-Adressformat
Verwendung:
Dieses Programm akzeptiert das veraltete Format für IP-Adressen! Dies umfasst Adressen mit 1, 2 oder 3 Teilen oder mit hexadezimalen oder oktalen Teilen. Zitieren der Handbuchseite inet_addr (3) ,
Die meisten Programme akzeptieren dieses veraltete Format nicht mehr,
ping 0177.1
funktionierten aber immer noch in OpenBSD 5.5.quelle
PHP,
138110 Bytesquelle
explode('.',"$a.$b")
mitsplit('\.',"$a.$b")
.Mathematica 9, 108 Bytes
Ungolfed:
quelle
PHP, 46 Bytes
Probieren Sie es online!
ip2long
quelle
C # - 135
Richtig formatiert
https://dotnetfiddle.net/Q0jkdA
quelle
Ruby, 93 Bytes
Ausgabe
quelle
J, 25 Bytes
Nimmt die IP-Strings mit vier Punkten als linkes und rechtes Argument.
Erklärt:
Beispiele:
quelle
Faktor 73 Bytes
Übersetzung der CoffeeScript-Antwort.
quelle
Javascript ES6, 81 Zeichen
Prüfung:
PS: Ich werde später versuchen, es zu optimieren.
quelle
Lua, 153 Bytes
Es ist eine Schande, dass Lua keine Split-Funktion hat, ich musste meine definieren!
Ungolfed
quelle
Jelly , 12 Bytes, Sprachnachstellung
Probieren Sie es online!
Erläuterung
Die Anzahl der Elemente in einem Inklusivbereich ist die absolute Differenz ihrer Endpunkte plus 1.
quelle
Axiom, 385 Bytes
entgolfen und testen
quelle