Cette question est inspirée par le fait que j'aime voir des questions avec un nombre égal de votes et de réponses ...
Voici donc un simple défi de pile-échange-api pour vous tous:
Défi:
Étant donné un codegolf.stackexchange
identifiant de question, affichez le rapport entre les votes de la question et le nombre de réponses (par exemple votes/answers
).
Détails:
Vous pouvez accéder à Internet, mais vous ne pouvez accéder
stackexchange.com
qu'à ses différents sous-domaines. Vous ne pouvez pas utiliser de raccourcisseurs d'URL.Vous pouvez prendre une entrée et donner une sortie dans n'importe quel format standard.
Vous devez afficher le rapport sous la forme d'un nombre décimal dans la base 10, avec au moins 4 {précis} chiffres après la décimale (les zéros peuvent être tronqués).
Si la question est sans réponse, votre programme peut produire un comportement indéfini.
Vous devez utiliser la
score
question comme décompte des voix, voir ici .
Il s'agit du code-golf , le moins d'octets dans chaque langue gagne pour cette langue, le moins d'octets dans l'ensemble gagne.
Voici un exemple de programme en Python 3 + requests
:
import requests
import json
id = input("id> ")
url = "https://api.stackexchange.com/2.2/questions/" + id + "?site=codegolf"
content = requests.get(url).text
question = json.loads(content)["items"][0]
print(float(question["score"]) / question["answer_count"])
la source
Réponses:
JavaScript (ES6),
103102 octetsDoit être exécuté à partir du niveau racine de
api.stackexchange.com
. Renvoie unPromise
objet contenant le résultat.Si le fait de l'exécuter à partir d'un chemin spécifique est autorisé, cela devient
92 à90 octets.Essayez-le
URL complète ajoutée pour lui permettre de fonctionner ici.
la source
i=>(j=i.items[0])
par({items:[j]})=>j
pour enregistrer un octet.Stratos , 40 octets
-4 octets grâce à Shaggy
Essayez!
Stratos est spécialisé dans le stack-exchange-api .
Explication:
Le code se décompresse comme suit:
À partir de la première ligne, Stratos évalue les dyades de droite à gauche.
f"api.stackexchange.com/questions/%?site=codegolf"r"items"@0
signifie "évaluer la dyade@
avec l'argument de gauchef"api.stackexchange.com/questions/%?site=codegolf"r"items"
et l' argument de droite0
.@
obtient le nième élément d'un tableau JSON.Pour évaluer
f"api.stackexchange.com/questions/%?site=codegolf"r"items"
, nous allons ensuite évaluer la dyader
avec l'argument de gauchef"api.stackexchange.com/questions/%?site=codegolf"
et l' argument de droite"items"
.r
obtient le tableau JSON avec le nom spécifié.Ensuite, nous devrons évaluer
f"api.stackexchange.com/questions/%?site=codegolf"
. Tout d'abord,%
est remplacé par l'entrée.f
signifie "obtenir le contenu de cette URL".Maintenant, nous pouvons passer à la deuxième ligne. La nouvelle ligne signifie "ajouter ce que nous avons évalué à la liste des arguments implicites"
Ensuite, nous évaluons
s
(obtenir une chaîne dans un objet JSON avec un certain nom) avec{
et"answer_count"
.{
prend un élément de la pile d'arguments implicites, le renvoie et l'ajoute à la pile.Ensuite, nous ajoutons la sortie de cela à la pile d'arguments implicites.
Pour évaluer
⁰s"score"/
, nous appliquons la dyade/
(division) à⁰s"score"
et un élément de la pile d'arguments implicites.Pour évaluer,
⁰s"score"
nous obtenons la chaîne"score"
de l'objet JSON du 0e élément de la pile d'arguments implicite.Maintenant, la sortie de
/
est imprimée et le programme se termine.la source
2.2/
).R + jsonlite , 111 octets
Lien R-violon
jsonlite est une belle bibliothèque de conversion JSON <-> R qui fonctionne assez bien. Je n'étais pas sur le point de jouer au golf avec un analyseur JSON pour R ...
la source
http
protocole. De plus, je suppose142729
que cela ne devrait pas être codé en dur là-dedans?T-SQL,
6454 octetsIl est rare que SQL puisse battre (la plupart) d'autres langues! Au lieu de l'URL de l'API, je suis allé directement à l' explorateur de données Exchange Stack :
le
##i##
SQL n'est pas standard, c'est le format de Stack Exchange pour demander une entrée.Notez que la source de l'explorateur de données n'est mise à jour que la nuit, les valeurs ne sont donc pas actuelles.
Va jeter une division par zéro erreur sur les questions sans réponse.
Modifier : enregistré 10 octets en multipliant par 1,0 au lieu d'une explicite
CONVERT
àFLOAT
.la source
PowerShell , 130 octets
Effectue une
I
équation nvoke-W
ebR
contre l'URL, obtient.content
celle - ci, fait unConvertFrom-Json
de ce contenu et obtient le.items
de cet objet JSON. Stocke cela dans$a
et sort le.score
comme numérateur. Le dénominateur est le.answer_count
. Cette valeur est laissée sur le pipeline et la sortie est implicite.Si la question est sans réponse, cela devrait générer une erreur "Diviser par zéro".
la source
Japt ,
8382 octetsJe voulais essayer ceci pour voir comment cela fonctionnerait, vu que Japt ne peut pas l'accomplir nativement. Pour l'essentiel, tout cela consiste à
eval
créer une version compressée de ma solution JS . Comme Japt est JS, nous pouvons exiger que cela soit exécuté à partir du niveau racine deapi.stackexchange.com
et renvoyer également unPromise
objet contenant le résultat.//api.stackexchange.com/
dans l'URL et deconsole.log
sorte que vous pouvez réellement le voir fonctionnerla source
Mathematica, 124 octets
Mathematica a un type de données appelé
Rule
et il me dérange. : Pla source
Python 3 + requêtes, 149 octets
-1 octet merci à M. Xcoder.
la source
http
suffit.PHP, 167 octets
Fissure ultra-rapide à cela. Enregistrer en tant que fichier et exécuter dans le terminal comme suit:
Cela pourrait être un moyen de réduire cela.
la source