查找用户的SE信誉


10

挑战

给定SE用户的ID,从用户已注册的所有Stack Exchange网络中输出其信誉总和。

规则

如果用户在站点上的信誉不超过101,则将其总计为零。

您不应该算出51区代表或隐藏社区!

不允许使用URL缩短器。

例子

可调整的

用户3244989(测试版衰减)

14141

用户918086(Dennis)

204892

用户11683(Jon Skeet)

1029180

获奖

以字节为单位的最短代码获胜。

Answers:


1

curl,grep和awk,106个字节

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

它很脏,但似乎运作良好。我不awk经常使用,因此,如果有一种方法可以使自己grep远离高尔夫,我不会感到惊讶。


3

Python 2(带请求),149字节

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)

我请求API,将API转换为JSON,然后通过生成器表达式求和。生成器会删除信誉低于101的帐户。

感谢改进代码:Jonathan Allan


1

带httr的R,146字节

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字节

需要-rjson -rnet/http -n标志。输入来自STDIN(无尾随换行符)。需要Ruby 2.4 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字节

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

尝试一下

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>


这会忽略51区吗?
Beta Decay's

@BetaDecay,我是的。我正在编辑我的回答的警告以进行解释。
毛茸茸的

哦,对了,我认为过滤出来并不是那么简单
Beta Decay

@BetaDecay,是否确认该端点包括A51站点?
毛茸茸的

端点是什么意思?:/
Beta Decay's
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.