Schreiben Sie die kürzeste Funktion, um eine IP-Adresse in ihre Ganzzahldarstellung umzuwandeln und als Ganzzahl auszugeben.
Um eine IPv4-Adresse in eine Ganzzahldarstellung zu ändern, ist die folgende Berechnung erforderlich:
- Teilen Sie die IP-Adresse in vier Oktette auf.
(Octet1 * 16777216) + (Octet2 * 65536) + (Octet3 * 256) + (Octet4)
Sample Input
192.168.1.1 10.10.104.36 8.8.8.8
Beispielausgabe
3232235777 168454180 134744072
code-golf
conversion
Kyle Rozendo
quelle
quelle
Antworten:
PHP - 21 Zeichen
quelle
MySQL - 20 Zeichen
quelle
Ruby (keine eingebauten / bewerteten) - 47
Prüfung:
quelle
C: 79 Zeichen
BEARBEITEN: entfernte C ++, würde nicht ohne Überschriften kompilieren; Mit GCC lösen die Funktionsaufrufe
printf
undstrtol
eingebaute Funktionen aus, daher können Header übersprungen werden. Danke an @ugoren für die Tipps. Dies wird so kompiliert wie es ist ohne zusätzliche Optionen zugcc
.EDIT2:
return
ist eigentlich überflüssig :)quelle
Golfscript - 16 Zeichen
Als eigenständiges Programm ist dies mit 11 noch kürzer.
Sehr einfach. Wertet die Eingabezeichenfolge (
~
) aus und fügt sie in ein Array ein[]
. Da das.
s in der Zeichenfolge das obere Ende des Stapels dupliziert, nehmen wir nur jeden anderen Ausdruck in das Array (2%
). Wir haben jetzt ein Array, das im Grunde genommen eine Basis-256-Zahl darstellt. Daher verwenden wir eine eingebaute Funktion, um die Konvertierung durchzuführen. (256base
).quelle
{:B;{\B*+}*}:base
(obwohl die eigentliche Funktion für Konvertierungen in die andere Richtung überladen ist). Interessant ist, dass die Basiskonvertierung für Strings mit Arrays identisch ist (da Strings nur Arrays ohne Verschachtelung sind, aber ein anderes Ausgabeformat haben).base
Befunge - 2x11 = 22 Zeichen
Befunge gewinnt eines Tages.
Erläuterung
Das größte Unterscheidungsmerkmal von Befunge ist, dass es sich nicht wie bei den meisten Sprachen um einen linearen Befehlssatz handelt. Es ist ein 2D-Raster von Einzelzeichenanweisungen, bei denen die Steuerung in jede Richtung fließen kann.
Diese Charaktere ändern die Richtung der Steuerung, wenn sie getroffen werden, dies macht die Hauptschleife.
Dieser gibt eine Zahl ein und legt sie auf den Stapel (
&
), entfernt die beiden obersten Werte vom Stapel, fügt sie hinzu+
und legt sie zurück auf den Stapel ( ), gibt ein einzelnes Zeichen ein und legt dann seinen ASCII-Wert auf den Stapel (~
) schiebt 1 auf den Stapel und fügt sie hinzu (1+
).Der Interpreter, den ich verwendet habe, gibt -1 für das Ende der Eingabe zurück, einige geben stattdessen 0 zurück, damit der
1+
Teil für sie entfernt werden kann.Das
#
bewirkt, dass das nächste Zeichen übersprungen wird, dann wird_
ein Wert aus dem Stapel entfernt, und wenn er Null ist, wird die Steuerung nach rechts gesendet, andernfalls wird der Wert nach links gesendet. Wenn der Wert Null war, wird.
ein Wert vom Stapel entfernt, als Ganzzahl ausgegeben und@
das Programm gestoppt. Ansonsten wird diev
Steuerung an die Rückführschleife gesendet.Dies multipliziert einfach den obersten Wert des Stapels mit 256 und gibt die Kontrolle an den Start zurück.
quelle
>v<^
ist das eigentlich die Hauptschleife in diesem Programm. In diesem Fall passiert die Steuerung vermutlich nicht die letzten drei Leerzeichen unten, aber ich finde es am einfachsten, Befunge-Programme als kleinstes Begrenzungsrechteck zu zählen. und wenn Sie versuchen, den Kontrollfluss zu zählen, bekommen Sie Probleme mit selbstmodifizierenden Programmen.Rubin (40)
->
quelle
to_i 16
alshex
einige Zeichen zu speichern.Rubin - 46 Zeichen
quelle
Golfscript - 21 Zeichen
quelle
Python
5645quelle
C ++ - viele Zeichen
quelle
Power Shell
6661Variation über Joeys Antwort:
quelle
AWK in ~ 47 Zeichen
Der Erstbesucher hier ... Ähm, ich weiß nicht, wie ich das zählen soll, aber ohne das Echo sind es 47 Zeichen in AWK. (Nicht gerade Bogey Golf, aber es ist im Loch.)
Ganztägig früh auch für #tbt, also habe ich tatsächlich einen Zeitplan getroffen !!! * 8-)
Bannertag.
quelle
{print $1*16777216+$2*65536+$3*256+$4}
. Natürlich müssten Sie das Feldtrennzeichen in das Programm verschieben, anstatt es als Flag anzugeben.Bash - 46
Inhaltsverzeichnis
Sie finden 4 verschiedene Golfvarianten:
Neue Version! 2018-11-15 Golfspieler, 46 char
Erläuterung
$_
mehr Golf gespielt.${1//./ }
ersetzt alle Punkte.
durch Leerzeichen.
printf
wird etwas rendern192<<(_-=8)|168<<(_-=8)|1<<(_-=8)|1<<(_-=8)|
0
nach dem letzten ODER hinzufügen|
und_
auf 32 . bash liest das Konstrukt von links nach rechts,$((_-=8))
machen Sie also24
bei der ersten Schicht ,16
bei der zweiten und so weiter.in Aktion:
Zum Spaß: versuche
$_
Inhalte zu bekommen , danach:In einer Funktion:
oder in eine Schleife: -> 60
Bash (v4.1 +): 47
Erster Beitrag
Erläuterung:
${1//./ }
ersetzt alle Punkte.
durch Leerzeichen.
set --
eingestellt Positionsparameter ($@=($1 $2 $3...)
)set -- ${1//./ }
wird geteilt$1
durch Punkte und Satz$1
,$2
,$3
und$4
wenn der String containg3
Punkte (ohne Leerzeichen).in Aktion:
oder in einer Funktion:
oder in eine Schleife: -> 61
in Aktion:
Eine andere Version anders golfen: 65
Stichprobe:
In einer Schleife (+14): 82
* oder etwas hässlicher: 70 *
Wo
printf
gibst|192<<24 |168<<16 |1<<8|1<<24 |0<<16 |0<<8
du eine Schnur wie wir müssen endlich schneiden<<2...
.gespielt mit
mapfile
, länger: 68oder mit Schleife: 82
quelle
set --
Teil passiert . Vielen Dank.set -- foo bar
wird$@
mit foo as$1
und bar as gefüllt$2
.Windows PowerShell, 70
Naiver Ansatz:
Mit der Verwendung von System.Net.IPAddress: 76
Prüfung:
quelle
Befunge-93 - 36 Zeichen
quelle
Perl: DIY (für Oneliner.) (40)
# Verwenden Sie den Wert in $ i
DIY-Funktion (65):
quelle
split'.'
nichtsplit/\./
split q{.}
, Shell-Anführungszeichen zu umgehen: /Haskell - 14 Zeichen
Verwendung in GHCi:
Das einzige Problem ist, dass Sie links oder rechts vom Punkt Leerzeichen einfügen müssen, da sonst die Zahlen als Gleitkomma interpretiert werden.
quelle
77 Zeichen
quelle
JavaScript (45 Zeichen)
Benötigt Unterstützung für die
.reduce()
Array - Methode in ES5 und eingeführt Pfeil Funktionen .quelle
Powershell,
4743 BytesTestskript:
Ausgabe:
quelle
120 Zeichen
Mein erster Code Golf - sei sanft;)
quelle
D: 84 Zeichen
quelle
Python 3.2 (69)
quelle
PHP (keine eingebauten / eval) - 54
quelle
<?php
, nicht nur<
?Perl, 14 Zeichen:
quelle
Stax , 9 Bytes
Führen Sie es aus und debuggen Sie es
quelle
05AB1E , 5 Bytes
Probieren Sie es online!
quelle
Perl 6 , 16 Bytes
Probieren Sie es online!
quelle
C (gcc)
-m32
/ POSIX, 33 BytesProbieren Sie es online!
Auf einer Big-Endian - Plattform, können Sie einfach ein Makro mit definieren
-Df=inet_aton
für 13 Bytes .quelle