Trouver la réputation SE d'un utilisateur

10

Défi

Étant donné l'ID d'un utilisateur SE, affichez la somme de sa réputation sur tous les réseaux Stack Exchange auxquels l'utilisateur s'est inscrit.

Règles

Si un utilisateur a 101 ou moins de réputation sur un site, comptez-le comme zéro dans la somme.

Vous ne devez pas compter le représentant de la zone 51 ou les communautés cachées !!

Les raccourcisseurs d'URL sont interdits.

Exemples

Sous réserve de modifications

Utilisateur 3244989 (désintégration bêta)

14141

Utilisateur 918086 (Dennis)

204892

Utilisateur 11683 (Jon Skeet)

1029180

Gagnant

Le code le plus court en octets gagne.

Beta Decay
la source

Réponses:

1

curl, grep et awk, 106 octets

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

C'est sale mais semble bien fonctionner. Je n'utilise pas awksouvent, donc je ne serais pas surpris s'il y avait un moyen de jouer au golf grepavec.

Aaron
la source
3

Python 2 (avec demandes), 149 octets

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)

J'ai demandé l'API, converti l'API en JSON, puis résumé la réputation via une expression de générateur. Le générateur supprime les comptes ayant moins de 101 points de réputation.

Crédit pour l'amélioration du code: Jonathan Allan .

Neil
la source
1

R avec httr, 146 octets

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

Ruby 2.4, 136 + 20 = 156 octets

Nécessite les -rjson -rnet/http -ndrapeaux. L'entrée provient de STDIN (pas de nouvelle ligne de fin). Ruby 2.4 est nécessaire pour sum.

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

JavaScript (ES6), 148 143 142 141 octets

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

Essayez-le

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>

Hirsute
la source
Est-ce que cela ignore la zone 51?
Beta Decay
@BetaDecay, je pense que oui. J'édite une mise en garde dans ma réponse maintenant pour l'expliquer.
Shaggy
Oh oui, je ne pensais pas que ce serait aussi simple de filtrer
Beta Decay
@BetaDecay, est-ce la confirmation que ce point de terminaison n'inclut pas les sites A51?
Shaggy
Qu'entendez-vous par point final? : /
Beta Decay