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.

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.


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 .


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

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

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>


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.