Je jouais avec la fonction de demande d'URL de Pyth et j'ai remarqué que Google donnait toujours une réponse avec une longueur légèrement différente pour moi, généralement des ~10500
caractères.
Donc, votre tâche dans ce défi est d'imprimer la longueur moyenne de la réponse html de http://google.com
.
Spécifications
- Vous prendrez une entrée
n
qui est le nombre de demandes à faire. - Pour chaque demande, vous ferez une demande HTTP get.
- Vous compterez le corps de la réponse (le texte html), pas les en-têtes.
- Affiche la moyenne arithmétique des longueurs des réponses.
- Vous ne pouvez accéder qu'à l'URL
http://google.com
, pas à une autre. - C'est le code-golf , donc le code le plus court en octets gagne!
Exemple de sortie pour entrée 10
: 10560.1
(J'ai utilisé Python urllib
pour cela)
PS: quelqu'un sait pourquoi google fait ça?
http://google.com
retourne toujours 261 octets pour moi ...https://google.com/ncr
pourrait en retourner plus cependant.http://google.com
renvoie toujours 10422 octets pour moi ...http://google.com
envoie. Bien sûr, ce n'est pas le but du défi, donc le défi devrait être modifié par l'OMI pour refléter cela.Réponses:
Utilitaires système Bash +,
56534948 octetsMise à jour: économisé 4 octets grâce à Digital Trauma et 1 octet de plus grâce à Dennis
Dans ma réponse d'origine, j'utilisais
yes
en combinaison avecxargs
pour émuler une boucle for. Maiscurl
peut accepter en entrée une liste d'URL, donc seule la sortie deyes
est réellement nécessaire.Lorsqu'il
curl
accède à google.com , il reçoit une page de redirection 302 qui a la nouvelle URL dans la section du corps, donc l'-L
option est nécessaire pour la suivre.Exécuter l'exemple: la réponse est imprimée sur STDOUT, je redirige STDERR juste pour plus de clarté
Explication: (du code soumis initialement)
Edit: j'ai remplacé
wc -m
parwc
, car même si sans arguments, il affiche 2 statistiques de plus que celle que je voulais, le mêmedc
script après cette sortie fonctionne toujours, car le nombre que nous voulons est, heureusement, placé au-dessus de la pile pendant l'analyse.la source
xargs
. Merci, j'ai mis à jour la réponse.-s
. La sortie parasite vers STDERR est autorisée par défaut.MATL , 28 octets
Gif ou ce n'est pas arrivé:
Comment ça marche
la source
PowerShell , 48 octets
Explication
1
à l'entier d'entrée.Invoke-RestMethod
(irm
), la page d'accueil Google. Le résultat n'est pas JSON donc il renverra le corps mot pour mot au lieu de le désérialiser.Measure-Object
(measure
), obtenant une moyenne de laLength
propriété des chaînes d'entrée (les corps).Average
propriété résultante .la source
|% A*
Je ne savais pas que c'était possible, j'ai toujours évitémeasure
parce que je pensais que vous ne pouviez pas joker le nom de la propriété ...|? A*
des trucs sympas. J'ai besoin de regarder mes fichiers de présentation et d'ajouter ces trucs au fil de conseils.Java 8,
197184182181 181 octetsGolfé:
Non golfé:
Cela fuit des ressources, mais c'est un petit prix à payer à la recherche du moins d'octets.
la source
n->{int s=0,i=0;for(;i<n;++i)try{...}catch(Exception e){}return s*1.0/n;}
. Je ne sais pas si vous pouvez remplacers*1.0/n
dans le retour avecs*1f/n
, mais ça vaut le coup d'essayerfor(;i<n;++i)
peut être changéfor(;i++<n;)
pour -1 octet.Pyth, 25 octets
'
est la fonction ouverte en Pyth, et lorsqu'elle reçoit une chaîne commençant parhttp
, elle effectue une requête GET sur ce site Web. La valeur de retour est une liste d'bytes
objets. Malheureusement, Pyths
ne sait pas comment concaténer ces objets, donc au lieu de celals
, j'utiliseslM
pour obtenir la longueur totale. Ceci est effectué un nombre de fois égal à l'entrée parm
, et les résultats sont moyennés par.O
.la source
05AB1E , 15 octets
Code:
Explication:
Utilise l' encodage CP-1252 . Lorsqu'il est exécuté dans l'interpréteur hors ligne, j'obtiens ce qui suit:
la source
PHP,
9078 octetsla source
join(file())
au lieu defile_get_contents()
vous enregistre quelques octets.echo
. Vous pouvez également utiliser$i
au lieu de$argv[1]
comme diviseur.Mathematica, 58 octets
Fonction anonyme. Prend un nombre en entrée et renvoie un nombre en sortie.
la source
N@
? Vous ne l'imprimez pas, il n'y a donc aucune raison de le formater correctement.Python, 102 octets
Ou, si nous pouvons retourner des entiers plutôt que des flottants, la réponse peut être de 98 octets:
la source
)for x in[
. De plus, si vous vous limitez à Python 3, la division sera automatiquement flottante et vous pourrez la supprimer0.0
.[]
dans le 2ème cas -sum
prend ungenerator
CJam , 23 octets
Ne fonctionne pas sur TIO pour des raisons de sécurité.
Essai
Comment ça marche
la source
CJam, 27 octets
CJam suppose HTTP s'il n'est pas spécifié.
Explication
la source
Clojure, 102 octets
Non golfé:
#(count (slurp (clojure.java.io/reader "http://www.google.com")))
est une fonction locale qui compte les octets d'une requête http vers google,repeatedly
appelle la fonction n fois et fait une liste à partir des nombres retournés, réduit les sommes ensemble les résultats, et enfin cela est divisé par n pour faire une moyenne. La réduction est démarrée à 0,0 pour forcer le résultat dans un flottant, sinon la division entraînerait un rationnel. Le tout est enveloppé dans une fonction anonyme qui prend le nombre de fois pour nommer la demande.la source
(clojure.java.io/reader)
partie est inutile entre autres. Cela se fait automatiquement en arrière-plan si vous passez une chaîne.Python 3, 95 octets
Solution récursive
où
n=i=int(input())
bibliothèque de demandes
la source
Python 3 + [Requests](http://docs.python-requests.org/en/master/user/install/#install), 95 bytes
urllib2
est une bibliothèque Python native (préinstallée) docs.python.org/2/library/urllib2.html afin que toute personne téléchargeant Python puisse immédiatement exécuter son code. Je ne peux pas exécuter votre code sur mon Python 3 sans cette bibliothèque.Perl, 66 octets
51 octets + 14 octets pour
-MLWP::Simple<space>
+ 1 octet pour-p
.Solution simple utilisant LWP :: Simple . La
get
fonction est exportée par défaut et renvoie le contenu de la réponse en cas de succès.Perl 5.14+,
9493 octets (modules principaux uniquement)79 octets + 13 octets pour
-MHTTP::Tiny<space>
+ 1 octet pour-p
.Utilise HTTP :: Tiny , qui est dans le noyau depuis Perl 5.14.
Comment ça marche
Cette:
est la syntaxe indirecte de l'objet équivalente à ceci:
et enregistre trois octets. La
get
méthode renvoie une référence de hachage avec le contenu stocké sous lacontent
clé.Pour obtenir le contenu réel de la réponse, nous faisons:
ce qui équivaut à:
mais enregistre un octet lorsque nous ajoutons
length
:la source
Rebol, 69 octets
la source
Clojure, 70 octets
Un pli sur une
n
longue portée. Additionne la longueur de chaque demande, puis la divise par le nombre de demandes. En raison de la façon dont Clojure gère la division, cela renvoie une fraction, pas une décimale. Si cela est inacceptable, je peux le réparer au prix de quelques octets.la source
Ruby, 73 + 10 = 83 octets
Utilise le
-rnet/http
drapeau.la source
Lisp commun + quicklisp / dexador , 23 + 72 = 95 octets
Si quicklisp est installé sur le système, il téléchargera et installera dexador si nécessaire.
Prélude:
Code
Non golfé:
Explication
(dex:get "http://google.com")
Cela effectue la demande Web à Google et renvoie cinq valeurs:
(length (dex:get ...))
Si vous ne demandez pas d'explicite autrement, Common Lisp supprimera toutes les valeurs de retour autres que la première, de sorte que la fonction de longueur ne voit que la réponse http elle-même et renvoie la longueur de cette chaîne.
(loop :repeat n :sum (length ...))
Cela calcule la longueur de réponse n fois et les ajoute.
(/ (loop ...) n)
Ceci divise les longueurs additionnées par n pour calculer la moyenne.
(lambda (n) ...)
Cela encapsule le corps de code dans une fonction anonyme qui prend n comme argument et renvoie la longueur de réponse moyenne pour n requêtes Web à http://google.com .
la source