Diese Frage ist inspiriert von der Tatsache, dass ich es liebe, Fragen mit gleicher Stimme und gleicher Beantwortung zu sehen ...
Hier ist eine einfache Stack-Exchange-API- Herausforderung für euch:
Herausforderung:
Geben Sie bei gegebener codegolf.stackexchange
Fragen-ID das Verhältnis zwischen den Stimmen der Frage und der Anzahl der Antworten aus (z votes/answers
. B. ).
Besonderheiten:
Sie können auf das Internet zugreifen, aber Sie dürfen nur auf
stackexchange.com
die verschiedenen Subdomains zugreifen . Sie dürfen keine URL-Kürzungen verwenden.Sie können Eingaben und Ausgaben in jedem Standardformat vornehmen.
Sie müssen das Verhältnis als Dezimalzahl in Basis 10 mit mindestens 4 {genauen} Nachkommastellen ausgeben (Nullen können abgeschnitten sein).
Wenn die Frage nicht beantwortet wird, kann Ihr Programm undefiniertes Verhalten erzeugen.
Sie sollten das
score
von der Frage als Stimmenzahl verwenden, siehe hier .
Dies ist Code-Golf , die wenigsten Bytes in jeder Sprache gewinnen für diese Sprache, die wenigsten Bytes insgesamt gewinnen insgesamt.
Hier ist ein Beispielprogramm in 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"])
quelle
Antworten:
JavaScript (ES6),
103 bis102 ByteMuss von der Root-Ebene von ausgeführt werden
api.stackexchange.com
. Gibt einPromise
Objekt zurück, das das Ergebnis enthält.Wenn es erforderlich ist, dass es von einem bestimmten Pfad ausgeführt wird , werden
92 bis90 Bytes zugelassen.Versuch es
Vollständige URL hinzugefügt, damit es hier funktioniert.
quelle
i=>(j=i.items[0])
durch({items:[j]})=>j
, um ein Byte zu speichern.Stratos , 40 Bytes
-4 Bytes dank Shaggy
Versuch es!
Stratos ist spezialisiert auf Stack-Exchange-API- Fragen.
Erläuterung:
Der Code wird wie folgt dekomprimiert:
Ab der ersten Zeile wertet Stratos die Dyaden von rechts nach links aus.
f"api.stackexchange.com/questions/%?site=codegolf"r"items"@0
bedeutet "evaluiere die Dyade@
mit dem linken Argumentf"api.stackexchange.com/questions/%?site=codegolf"r"items"
und dem rechten Argument0
.@
Erhält das n-te Element eines JSON-Arrays.Um zu bewerten
f"api.stackexchange.com/questions/%?site=codegolf"r"items"
, werden wir als nächstes die Dyader
mit dem linken Argumentf"api.stackexchange.com/questions/%?site=codegolf"
und dem rechten Argument bewerten"items"
.r
Ruft das JSON-Array mit dem angegebenen Namen ab.Als nächstes müssen wir auswerten
f"api.stackexchange.com/questions/%?site=codegolf"
. Erstens%
wird durch die Eingabe ersetzt.f
bedeutet "den Inhalt dieser URL erhalten".Jetzt können wir zur zweiten Zeile übergehen. Der Zeilenumbruch bedeutet "das, was wir ausgewertet haben, zur Liste der impliziten Argumente hinzufügen".
Als nächstes evaluieren wir
s
(erhalten String im JSON-Objekt mit einem bestimmten Namen) mit{
und aus"answer_count"
.{
Nimmt ein Element aus dem impliziten Argumentstapel, gibt es zurück und fügt es dem Stapel hinzu.Dann fügen wir die Ausgabe davon dem impliziten Argumentstapel hinzu.
Zur Bewertung
⁰s"score"/
wenden wir die Dyade an/
(Division) auf⁰s"score"
und ein Element aus dem impliziten Argumentstapel an.Zur Bewertung bekommen
⁰s"score"
wir den String"score"
aus dem JSON-Objekt aus dem 0. Element im impliziten Argumentstapel.Jetzt wird die Ausgabe von
/
gedruckt und das Programm beendet.quelle
2.2/
) löschen .R + Jsonlite , 111 Bytes
R-Geige Link
jsonlite ist eine nette JSON <-> R-Konvertierungsbibliothek, die recht gut funktioniert. Ich wollte keinen JSON-Parser für R ...
quelle
http
Protokoll speichern . Ich schätze,142729
sollte da nicht hartcodiert sein?T-SQL,
6454 BytesEs ist selten, dass SQL (die meisten) anderen Sprachen schlagen kann! Anstelle der API-URL bin ich direkt zum Stack Exchange Data Explorer gegangen :
Dies
##i##
ist kein Standard-SQL, sondern das Format von Stack Exchange, um zur Eingabe aufzufordern.Beachten Sie, dass die Daten-Explorer-Quelle nur nachts aktualisiert wird, sodass die Werte nicht aktuell sind.
Wirft bei Fragen ohne Antwort einen Fehler durch Division durch Null.
Edit : 10 Bytes durch Multiplikation mit 1.0 anstelle eines expliziten
CONVERT
to gespeichertFLOAT
.quelle
PowerShell , 130 Byte
Führt einen
I
nvoke-W
eb-R
Test für die URL durch,.content
ruft derenConvertFrom-Json
Inhalt ab, führt einen Inhalt aus und ruft.items
das JSON-Objekt ab. Speichert das in$a
und zieht das.score
als Zähler heraus. Der Nenner ist der.answer_count
. Dieser Wert bleibt in der Pipeline und die Ausgabe ist implizit.Wenn die Frage unbeantwortet bleibt, sollte dies den Fehler "Division durch Null" auslösen.
quelle
Japt ,
8382 BytesWollte dies versuchen, um zu sehen, wie es funktionieren würde, da Japt es von Haus aus nicht schaffen kann. Im Wesentlichen handelt es sich dabei nur
eval
um eine komprimierte Version meiner JS-Lösung . Wie Japt ist JS dann können wir verlangen , dass diese von der Root - Ebene durchgeführt werdenapi.stackexchange.com
und auch ein RückPromise
Objekt das Ergebnis enthält.//api.stackexchange.com/
in die URL berücksichtigt,console.log
sodass Sie sehen können, wie es tatsächlich funktioniertquelle
Mathematica, 124 Bytes
Mathematica hat einen Datentyp namens
Rule
und verwirrt mich. : Pquelle
Python 3 + -Anfragen, 149 Byte
-1 Byte danke an Herrn Xcoder.
quelle
http
aus.PHP, 167 Bytes
Turboschneller Riss dabei. Als Datei speichern und im Terminal wie folgt ausführen:
Könnte ein Weg sein, dies zu reduzieren.
quelle