Encuentre la reputación SE de un usuario


10

Desafío

Dada la identificación de un usuario de SE, envíe la suma de su reputación de todas las redes de Stack Exchange a las que se haya registrado el usuario.

Reglas

Si un usuario tiene 101 o menos reputación en un sitio, cuéntelo como cero en la suma.

¡No debes contar el representante del Área 51 o las comunidades ocultas!

Los acortadores de URL no están permitidos.

Ejemplos

Sujeto a cambios

Usuario 3244989 (decaimiento beta)

14141

Usuario 918086 (Dennis)

204892

Usuario 11683 (Jon Skeet)

1029180

Victorioso

El código más corto en bytes gana.

Respuestas:


1

curl, grep y awk, 106 bytes

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

Está sucio pero parece funcionar bien. No uso a awkmenudo, así que no me sorprendería si hubiera una forma de jugar golf grepcon él.


3

Python 2 (con solicitudes), 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)

Solicité la API, convertí la API a JSON, luego resumí la reputación a través de una expresión generadora. El generador elimina cuentas con menos de 101 reputación.

Crédito por mejorar el código: Jonathan Allan .


1

R con httr, 146 bytes

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

0

Ruby 2.4, 136 + 20 = 156 bytes

Requiere las -rjson -rnet/http -nbanderas. La entrada es de STDIN (sin nueva línea final). Se necesita Ruby 2.4 para 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 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)))

Intentalo

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>


¿Esto ignora el Área 51?
Beta Decay

@BetaDecay, creo que sí. Estoy editando una advertencia en mi respuesta ahora para explicar.
Shaggy

Ah, claro, no pensé que fuera tan simple filtrarlo
Beta Decay

@BetaDecay, ¿es esa confirmación de que ese punto final no incluye sitios A51?
Shaggy

¿Qué quieres decir con punto final? : /
Beta Decay
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.