Знайти SE репутацію користувача


10

Виклик

Враховуючи ідентифікатор користувача SE, виведіть суму їх репутації з усіх мереж Stack Exchange, на які користувач підписався.

Правила

Якщо користувач має 101 або менше репутації на сайті, рахуйте його як нуль у сумі.

Ви не повинні рахувати площі 51 представників або прихованих спільнот !!

Скорочувачі URL-адрес заборонені.

Приклади

Підлягає зміні

Користувач 3244989 (бета-розпад)

14141

Користувач 918086 (Dennis)

204892

Користувач 11683 (Джон Скіт)

1029180

Перемога

Виграє найкоротший код у байтах.

Відповіді:


1

curl, grep and 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

Пітон 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 (немає останнього рядка). 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?
Бета-розпад

@BetaDecay, я так думаю . Я редагую застереження у своїй відповіді зараз, щоб пояснити.
Кудлатий

Ну правда, я не думав, що це буде так просто відфільтрувати
Beta Decay

@BetaDecay, це підтвердження того, що ця кінцева точка не включає сайти A51?
Shaggy

Що ви маєте на увазі під кінцевою точкою? : /
Бета-розпад
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.