Finden Sie die SE-Reputation eines Benutzers

10

Herausforderung

Geben Sie anhand der ID eines SE-Benutzers die Summe seiner Reputation aus allen Stack Exchange-Netzwerken aus, bei denen sich der Benutzer angemeldet hat.

Regeln

Wenn ein Benutzer auf einer Website eine Reputation von 101 oder weniger hat, zählen Sie diese als Null in der Summe.

Sie sollten Area 51 rep oder versteckte Communities nicht zählen !!

URL-Shortener sind nicht zulässig.

Beispiele

Änderungen vorbehalten

Benutzer 3244989 (Beta-Zerfall)

14141

Benutzer 918086 (Dennis)

204892

Benutzer 11683 (Jon Skeet)

1029180

Gewinnen

Der kürzeste Code in Bytes gewinnt.

Beta-Zerfall
quelle

Antworten:

1

Curl, Grep und Awk, 106 Bytes

curl http://api.stackexchange.com/users/$1/associated|grep -o n\"[^,]*|awk -F: '$2>101{s+=$2}END{print s}'

Es ist schmutzig, scheint aber gut zu funktionieren. Ich benutze es nicht awkoft, daher wäre ich nicht überrascht, wenn es eine Möglichkeit gäbe, damit Golf grepzu spielen.

Aaron
quelle
3

Python 2 (mit Anfragen), 149 Bytes

from requests import*
lambda i,r="reputation":sum(u[r]for u in get("http://api.stackexchange.com/users/"+i+"/associated").json()["items"]if u[r]>101)

Ich habe die API angefordert, die API in JSON konvertiert und dann die Reputation über einen Generatorausdruck summiert. Der Generator entfernt Konten mit weniger als 101 Reputation.

Dank für die Verbesserung des Codes: Jonathan Allan .

Neil
quelle
1

R mit httr, 146 Bytes

library(httr)
a=sapply(content(GET(paste0("http://api.stackexchange.com/users/",readline(),"/associated")))$items,'[[','reputation')
sum(a[a>101])
Neil
quelle
0

Ruby 2.4, 136 + 20 = 156 Bytes

Benötigt die -rjson -rnet/http -nFlags. Die Eingabe erfolgt über STDIN (kein nachfolgender Zeilenumbruch). Ruby 2.4 wird benötigt für sum.

p JSON.parse(Net::HTTP.get URI"http://api.stackexchange.com/users/#$_/associated")["items"].map{|i|i["reputation"]}.select{|i|i>101}.sum
Wert Tinte
quelle
0

JavaScript (ES6), 148 143 142 141 Bytes

u=>fetch(`//api.stackexchange.com/users/${u}/associated`).then(j=>j.json(s=0)).then(i=>(i.items.map(r=>s+=(r=r.reputation)>101&&r),alert(s)))

Versuch es

f=

u=>fetch(`//api.stackexchange.com/users/${u}/associated`).then(j=>j.json(s=0)).then(i=>(i.items.map(r=>s+=(r=r.reputation)>101&&r),alert(s)))

i.addEventListener("submit",e=>{e.preventDefault();(v=+i.firstChild.value)&&f(v)})
<form id=i><input type=number><button>Calc.</button></form>

Zottelig
quelle
Ignoriert dies Area 51?
Beta-Zerfall
@BetaDecay, ich denke schon. Ich bearbeite jetzt eine Einschränkung in meiner Antwort, um sie zu erklären.
Shaggy
Oh, richtig, ich dachte nicht, dass es so einfach wäre herauszufiltern
Beta Decay
@BetaDecay, ist das eine Bestätigung, dass dieser Endpunkt keine A51-Sites enthält?
Shaggy
Was meinst du mit Endpunkt? : /
Beta Decay