Trova la reputazione SE dell'utente


10

Sfida

Dato l'ID di un utente SE, genera la somma della sua reputazione da tutte le reti di Stack Exchange a cui l'utente si è iscritto.

Regole

Se un utente ha 101 o meno reputazione su un sito, contalo come zero nella somma.

Non dovresti contare il rappresentante dell'Area 51 o le comunità nascoste !!

Gli accorciatori di URL non sono consentiti.

Esempi

Soggetto a modifiche

Utente 3244989 (Decadimento beta)

14141

Utente 918086 (Dennis)

204892

Utente 11683 (Jon Skeet)

1029180

vincente

Vince il codice più breve in byte.

Risposte:


1

arricciatura, grep e awk, 106 byte

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

È sporco ma sembra funzionare bene. Non uso awkspesso, quindi non sarei sorpreso se ci fosse un modo per giocare a golf grepcon esso.


3

Python 2 (con richieste), 149 byte

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)

Ho richiesto l'API, ho convertito l'API in JSON, quindi ho riassunto la reputazione tramite un'espressione del generatore. Il generatore rimuove gli account con meno di 101 reputazione.

Ringraziamenti per il miglioramento del codice: Jonathan Allan .


1

R con httr, 146 byte

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

0

Rubino 2.4, 136 + 20 = 156 byte

Richiede le -rjson -rnet/http -nbandiere. L'input proviene da STDIN (nessuna nuova riga finale). Ruby 2.4 è necessario per sum.

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

0

JavaScript (ES6), 148 143 142 141 byte

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

Provalo

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>


Questo ignora l'Area 51?
Decadimento beta

@BetaDecay, penso di si . Sto modificando un avvertimento nella mia risposta ora per spiegare.
Shaggy,

Oh giusto, non pensavo che sarebbe stato così semplice filtrare
Decadimento beta

@BetaDecay, è la conferma che quell'endpoint non include i siti A51?
Shaggy,

Cosa intendi per endpoint? : /
Decadimento beta
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.