Найти репутацию пользователя 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?
Лохматый

Что вы подразумеваете под конечной точкой? : /
Бета-распад
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.