Znajdź reputację użytkownika SE

10

Wyzwanie

Biorąc pod uwagę identyfikator użytkownika SE, wyświetl sumę jego reputacji ze wszystkich sieci Stack Exchange, do których użytkownik się zarejestrował.

Zasady

Jeśli użytkownik ma na stronie reputację 101 lub mniej, policz ją jako zero w sumie.

Nie należy liczyć repozytorium Area 51 ani ukrytych społeczności !!

Skracacze URL są niedozwolone.

Przykłady

Temat do zmiany

Użytkownik 3244989 (rozkład beta)

14141

Użytkownik 918086 (Dennis)

204892

Użytkownik 11683 (Jon Skeet)

1029180

Zwycięski

Najkrótszy kod w bajtach wygrywa.

Rozpad beta
źródło

Odpowiedzi:

1

curl, grep i awk, 106 bajtów

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

Jest brudny, ale wydaje się działać dobrze. Nie używam awkczęsto, więc nie byłbym zaskoczony, gdyby istniał sposób na grę w golfa na grepodległość.

Aaron
źródło
3

Python 2 (z żądaniami), 149 bajtów

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)

Poprosiłem o API, przekonwertowałem API na JSON, a następnie zsumowałem reputację za pomocą wyrażenia generatora. Generator usuwa konta o reputacji mniejszej niż 101.

Podziękowania za ulepszenie kodu: Jonathan Allan .

Neil
źródło
1

R z httr, 146 bajtów

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

Ruby 2.4, 136 + 20 = 156 bajtów

Wymaga -rjson -rnet/http -nflag. Dane wejściowe pochodzą z STDIN (bez końca nowej linii). Potrzebny jest Ruby 2.4 sum.

p JSON.parse(Net::HTTP.get URI"http://api.stackexchange.com/users/#$_/associated")["items"].map{|i|i["reputation"]}.select{|i|i>101}.sum
Wartość tuszu
źródło
0

JavaScript (ES6), 148 143 142 141 bajtów

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)))

Spróbuj

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>

Kudłaty
źródło
Czy to ignoruje obszar 51?
Beta Decay
@BetaDecay, tak myślę . Redaguję zastrzeżenie do mojej odpowiedzi, aby wyjaśnić.
Kudłaty
No tak, nie sądziłem, że tak łatwo będzie je odfiltrować
rozpad Beta
@BetaDecay, czy to potwierdzenie, że ten punkt końcowy nie obejmuje witryn A51?
Kudłaty
Co rozumiesz przez punkt końcowy? : /
Beta Decay