Найти репутацию пользователя SE

10

Вызов

Учитывая идентификатор пользователя SE, выведите сумму его репутации из всех сетей Stack Exchange, на которые подписан пользователь.

правила

Если пользователь имеет 101 или менее репутацию на сайте, считать его как ноль в сумме.

Вы не должны считать площадь 51 представителя или скрытые сообщества!

Сокращения URL запрещены.

Примеры

Возможны изменения

Пользователь 3244989 (бета-распад)

14141

Пользователь 918086 (Денис)

204892

Пользователь 11683 (Jon Skeet)

1029180

выигрыш

Самый короткий код в байтах побеждает.

Бета распад
источник

Ответы:

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.

Кредит на улучшение кода: Джонатан Аллан .

Нил
источник
1

R с httr, 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 (без новой строки). Рубин 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?
бета-распад
@ BetaDecay, я так думаю . Сейчас я редактирую оговорку в своем ответе, чтобы объяснить.
Лохматый
Ах да, я не думал, что было бы так просто отфильтровать
Beta Decay
@BetaDecay, это подтверждение того, что эта конечная точка не включает сайты A51?
Лохматый
Что вы подразумеваете под конечной точкой? : /
Бета-распад