Ich habe mit Pyths URL-Anforderungsfunktion rumgespielt und festgestellt, dass Google mir immer eine Antwort mit einer etwas anderen Länge gab, normalerweise ~10500
Zeichen.
Ihre Aufgabe bei dieser Herausforderung ist es also, die durchschnittliche Länge der HTML-Antwort von auszudrucken http://google.com
.
Technische Daten
- Sie werden eine Eingabe
n
vornehmen, die der Anzahl der Anforderungen entspricht. - Für jede Anforderung stellen Sie eine HTTP-Abrufanforderung.
- Sie zählen den Antworttext (den HTML-Text), nicht die Überschriften.
- Geben Sie das arithmetische Mittel der Länge der Antworten aus.
- Sie können nur auf die URL zugreifen
http://google.com
, nicht auf eine andere. - Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes !
Beispielausgabe für Eingabe 10
: 10560.1
(Ich habe Python's urllib
dafür benutzt)
PS: weiß jemand warum google das macht?
http://google.com
gibt für mich immer 261 Bytes zurück ...https://google.com/ncr
könnte aber mehr zurückgeben.http://google.com
gibt für mich immer 10422 Bytes zurück ...http://google.com
gesendet wird. Natürlich ist dies nicht der Punkt der Herausforderung, daher sollte die Herausforderung IMO bearbeitet werden, um dies widerzuspiegeln.Antworten:
Bash + Systemdienstprogramme,
56534948 BytesUpdate: 4 Byte dank Digital Trauma und 1 Byte mehr dank Dennis
In meiner ursprünglichen Antwort habe ich
yes
in Kombination mitxargs
eine for-Schleife emuliert. Abercurl
kann als Eingabe eine Liste von URLs akzeptieren, so dass nur die Ausgabe vonyes
tatsächlich benötigt wird .Wenn
curl
auf google.com zugegriffen wird , wird eine 302-Umleitungsseite mit der neuen URL im Textabschnitt angezeigt. Daher ist die-L
Option erforderlich, um dieser zu folgen.Beispiel ausführen : Die Antwort wird auf STDOUT gedruckt. Ich leite STDERR nur aus Gründen der Übersichtlichkeit um
Erläuterung: (des ursprünglich eingereichten Codes)
Edit: Ich ersetzt
wc -m
mitwc
, denn auch wenn sie ohne Argumente druckt 2 mehr Statistiken als das, was ich wollte, dasselbedc
Skript diese Ausgabe folgenden noch funktioniert, weil der Graf wir wollen , ist, glücklich, oben auf dem Stapel während des Parsing platziert.quelle
xargs
. Danke, ich habe die Antwort aktualisiert.-s
. Eine Streuausgabe an STDERR ist standardmäßig zulässig.MATL , 28 Bytes
Gif oder es ist nicht passiert:
Wie es funktioniert
quelle
PowerShell , 48 Byte
Erläuterung
1
bis zur Eingabe-Ganzzahl.Invoke-RestMethod
(irm
) die Google-Homepage. Das Ergebnis ist nicht JSON, daher wird der Body wörtlich zurückgegeben, anstatt ihn zu deserialisieren.Measure-Object
(measure
) und erhalten Sie einen Durchschnitt vonLength
Eigenschaft der Eingabezeichenfolgen (der Körper) zu erhalten.Average
Eigenschaft.quelle
|% A*
es möglich war, ich habe es immer vermieden,measure
weil ich dachte, Sie könnten den Namen der Immobilie nicht mit einem Platzhalter versehen ...|? A*
paar coole Sachen an. Ich muss meine Präsentationsdateien ansehen und dieses Zeug zum Tipps-Thread hinzufügen.Java 8,
197184182181 BytesGolf gespielt:
Ungolfed:
Dies führt zu Ressourcenverlusten, ist jedoch ein geringer Preis für die Suche nach den wenigsten Bytes.
quelle
n->{int s=0,i=0;for(;i<n;++i)try{...}catch(Exception e){}return s*1.0/n;}
. Nicht sicher, ob Sies*1.0/n
in der Rückkehr mit ersetzen könnens*1f/n
, aber es ist einen Versuch wertfor(;i<n;++i)
kannfor(;i++<n;)
für -1 Byte geändert werden .Pyth, 25 Bytes
'
ist die Open-Funktion in Pyth, und wenn eine Zeichenfolge beginnthttp
, wird ein GET-Befehl für diese Website ausgeführt. Der Rückgabewert ist eine Liste vonbytes
Objekten. Leiders
weiß Pyths nicht, wie man diese Objekte verkettet, und stattdessen ermittlels
ichslM
die Gesamtlänge. Dies wird eine Anzahl von Malen durchgeführt, die gleich der Eingabe von sindm
, und die Ergebnisse werden gemittelt von.O
.quelle
05AB1E , 15 Bytes
Code:
Erläuterung:
Verwendet die CP-1252- Codierung. Beim Ausführen im Offline-Interpreter erhalte ich Folgendes:
quelle
PHP,
9078 Bytesquelle
join(file())
stattfile_get_contents()
spart dir ein paar bytes.echo
. Auch können Sie$i
statt$argv[1]
als Divisor verwenden.Mathematica, 58 Bytes
Anonyme Funktion. Nimmt eine Zahl als Eingabe und gibt eine Zahl als Ausgabe zurück.
quelle
N@
? Sie drucken es nicht, daher gibt es keinen Grund, es gut zu formatieren.Python, 102 Bytes
Oder wenn wir statt floats ganze Zahlen zurückgeben können, kann die Antwort 98 Bytes betragen:
quelle
)for x in[
. Wenn Sie sich auf Python 3 beschränken, wird die Unterteilung automatisch zur Float-Unterteilung und Sie können sie entfernen0.0
.[]
im 2. Fall -sum
nimmt einengenerator
CJam , 23 Bytes
Funktioniert aus Sicherheitsgründen nicht mit TIO.
Testlauf
Wie es funktioniert
quelle
CJam, 27 Bytes
CJam geht von HTTP aus, wenn nichts angegeben ist.
Erläuterung
quelle
Clojure, 102 Bytes
Ungolfed:
#(count (slurp (clojure.java.io/reader "http://www.google.com")))
ist eine lokale Funktion, die die Bytes einer http-Anfrage an Google zählt,repeatedly
die Funktion n-mal aufruft und aus den zurückgegebenen Zählwerten eine Liste erstellt, die Ergebnisse summiert und schließlich durch n dividiert, um einen Durchschnitt zu erhalten. Die Reduktion wird bei 0.0 gestartet, um das Ergebnis in einen Float zu zwingen. Andernfalls würde die Division zu einem rationalen Ergebnis führen. Das Ganze ist in eine anonyme Funktion eingeschlossen, die die Anzahl der Namen für die Anforderung benötigt.quelle
(clojure.java.io/reader)
Teil ist übrigens unnötig. Dies geschieht automatisch hinter den Kulissen, wenn Sie eine Zeichenfolge übergeben.Python 3, 95 Bytes
Rekursive Lösung
woher
n=i=int(input())
fordert Bibliothek an
quelle
Python 3 + [Requests](http://docs.python-requests.org/en/master/user/install/#install), 95 bytes
urllib2
ist eine native (vorinstallierte) Python-Bibliothek docs.python.org/2/library/urllib2.html, sodass jeder, der Python herunterlädt, sofort seinen Code ausführen kann. Ich kann Ihren Code auf meinem Python 3 ohne diese Bibliothek nicht ausführen.Perl, 66 Bytes
51 Byte + 14 Byte für
-MLWP::Simple<space>
+ 1 Byte für-p
.Einfache Lösung mit LWP :: Simple . Das
get
Funktion wird standardmäßig exportiert und gibt den Antwortinhalt bei Erfolg zurück.Perl 5.14+,
9493 Byte (nur Kernmodule)79 Bytes + 13 Bytes für
-MHTTP::Tiny<space>
+ 1 Byte für-p
.Verwendet HTTP :: Tiny , das seit Perl 5.14 im Core enthalten ist.
Wie es funktioniert
Dies:
ist die indirekte Objektsyntax wie folgt :
und spart drei Bytes. Die
get
Methode gibt eine Hashref mit dem unter der gespeicherten Inhalt zurückcontent
Schlüssel .Um den tatsächlichen Inhalt der Antwort zu erhalten, führen wir Folgendes aus:
was äquivalent ist zu:
spart aber ein Byte, wenn wir hinzufügen
length
:quelle
Rebol, 69 Bytes
quelle
Clojure, 70 Bytes
Eine Falte über eine
n
lange Distanz. Summiert die Länge jeder Anforderung und teilt sie dann durch die Anzahl der Anforderungen. Aufgrund der Art und Weise, wie Clojure mit der Division umgeht, wird ein Bruch und keine Dezimalzahl zurückgegeben. Wenn dies nicht akzeptabel ist, kann ich es auf Kosten von ein paar Bytes beheben.quelle
Ruby, 73 + 10 = 83 Bytes
Verwendet die
-rnet/http
Flagge.quelle
Common Lisp + Quicklisp / Dexador , 23 + 72 = 95 Bytes
Wenn quicklisp auf dem System installiert ist, wird dexador heruntergeladen und bei Bedarf installiert.
Auftakt:
Code
Ungolfed:
Erklärung
(dex:get "http://google.com")
Dies führt die Webanforderung an Google aus und gibt fünf Werte zurück:
(length (dex:get ...))
Wenn Sie keine explizite Anfrage stellen, verwirft Common Lisp alle Rückgabewerte außer dem ersten, sodass die Längenfunktion nur die http-Antwort selbst sieht und die Länge dieser Zeichenfolge zurückgibt.
(loop :repeat n :sum (length ...))
Dadurch wird die Antwortlänge n-mal berechnet und addiert.
(/ (loop ...) n)
Dies dividiert die summierten Längen durch n, um den Durchschnitt zu berechnen.
(lambda (n) ...)
Dadurch wird der Code in eine anonyme Funktion eingeschlossen, die n als Argument verwendet und die durchschnittliche Antwortlänge für n Webanfragen an http://google.com zurückgibt .
quelle