Encontre a reputação SE do usuário


10

Desafio

Dado o ID do usuário do SE, produza a soma de sua reputação em todas as redes do Stack Exchange nas quais o usuário se inscreveu.

Regras

Se um usuário tiver 101 ou menos reputação em um site, conte-o como zero na soma.

Você não deve contar representantes da Área 51 ou comunidades ocultas !!

Os encurtadores de URL não são permitidos.

Exemplos

Sujeito a mudanças

Usuário 3244989 (decaimento beta)

14141

Usuário 918086 (Dennis)

204892

Usuário 11683 (Jon Skeet)

1029180

Ganhando

O código mais curto em bytes vence.

Respostas:


1

enrolar, grep e awk, 106 bytes

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

Está sujo, mas parece funcionar bem. Como não uso com awkfrequência, não ficaria surpreso se houvesse uma maneira de jogar golfe grepcom ele.


3

Python 2 (com solicitações), 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)

Solicitei a API, converti a API para JSON e, em seguida, resumi a reputação por meio de uma expressão de gerador. O gerador remove contas com menos de 101 reputação.

Crédito para melhorar o código: Jonathan Allan .


1

R com 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

Requer as -rjson -rnet/http -nbandeiras. A entrada é de STDIN (sem nova linha à direita). O Ruby 2.4 é necessário 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)))

Tente

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>


Isso ignora a Área 51?
Beta Decay

@BetaDecay, acho que sim. Estou editando uma advertência na minha resposta agora para explicar.
Shaggy

Ah, certo, eu não achei que seria tão simples filtrar #
Decay Beta 22/04

@BetaDecay, é a confirmação de que esse ponto de extremidade não inclui sites A51?
Shaggy

O que você quer dizer com ponto final? : /
Decay Beta
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.