计算用户的声誉


12

挑战

给定用户(不是ID,我们已经面临挑战),输出其当前信誉和ID。

输入值

输入将是单个字符串,即用户的用户名。您可以假定该用户存在。

输出量

输出将是STDOUT或STDERR的两个整数,这将是用户的信誉和用户的ID。它们必须按照特定的顺序,并且可以任何合理的格式输出

细节

  • 信誉输出不得超过10分钟。
  • 您的程序在正常执行期间可能不会引发任何错误
  • 存在标准漏洞(包括没有URL缩短程序)
  • 如果使用该用户名的用户不止一个,则可以输出使用该用户名的任何用户的统计信息。这也是为什么必须输出ID的原因。
  • 要输出的信誉是用户在PPCG上的信誉,而不是网络总分。

可以在此处找到Stack Exchange API网站。您可以从此处阅读文档。


链接堆栈交换API。
Magic Octopus Urn

@carusocomputing会的,谢谢。我还需要修复一些问题,因为显然多个用户可以使用相同的名称。
HyperNeutrino

我想这条规则适用吗?另外,您可以确认这是PPCG而不是SE上用户的总声誉吗?
Arnauld

@Arnauld我会说是的。我确认这只是PPCG的声誉。我将在挑战中阐明这一点。谢谢。
HyperNeutrino

嗯,我做了这个T-SQL入门,但它不符合规则1,因为它是不足够的更新:(
ʰᵈˑ

Answers:


1

Bash + JQ,93字节

回滚87字节版本,因为它不能正确处理多用户响应。

打高尔夫球

curl "api.stackexchange.com/users?site=codegolf&inname=$1"|zcat|jq ..\|numbers|sed -n 4p\;12p

将在单独的行上输出第一个用户ID和信誉。

怎么运行的 ?

1)curl + zcat用于获取JSON格式的API答复

2)jq ..|numbers将递归展开JSON,并打印所有数值,每行一个

...
1   35
2   8
3   2
4   3315904
5   1487694154
6   1492702469
7   4565
8   82
9   82
10  60
11  20
12  6275
...

(添加的行号nl仅用于说明目的)

3)接下来,我们使用它们的绝对行号sed查找第一个account_idreputation

测试

>./reputation zeppelin
3315904
6275

6

的JavaScript(ES6),145个139 136 125 123 117字节

a=>fetch(`//api.stackexchange.com/users?site=codegolf&filter=!)LgZAmQ6ls0hH&inname=`+a).then(_=>_.text()).then(alert)

Shaggy节省了6个字节,Cyoce节省了6个字节。

我不确定是否应该输出所有具有相同名称的用户,或仅输出其中一个用户?此代码将全部输出。

f=a=>fetch(`//api.stackexchange.com/users?site=codegolf&filter=!)LgZAmQ6ls0hH&inname=`+a).then(_=>_.text()).then(alert)

f("tom")


击败我。使用保存6个字节"//api.stackexchange.com/users?site=codegolf&inname="+a
Shaggy's

注意:看来您返回的结果超出了(可能)应有的结果。我一直在尝试获取适用于HyperNeutrino的反馈,但您的结果将返回其名称仅包含输入-不完全匹配的用户的值。因此,您的最佳成绩是“汤姆·卡彭特”而不是“汤姆”。
戴森

可以_=>alert(_)用just 代替alert吗?
Cyoce

@Dason Yep,那是我不确定的一点;确定后,我将更改答案。
汤姆(Tom)

@Cyoce可行,谢谢!
汤姆(Tom)

4

Python 2中,178 169个 149字节

我会为此使用请求:

from requests import*
a=get("http://api.stackexchange.com/users?site=codegolf&inname="+input()).json()["items"][0]
print a["reputation"],a["user_id"]

基本上,它使用堆栈的api以JSON形式获取信息,然后获取项目“信誉”。此外,API还具有许多额外的参数,我也将这些参数剔除掉。

慷慨的贡献来自:carusocomputing,ElPedro,Malivil,Kerthana Prabhakaran


["items"][0]这只会得到第一个结果,在多个用户的情况下,如果我没记错的话,它仍然会忽略其他功能。
Magic Octopus Urn'Apr

import requests as rr.get(...保存4个字节。
ElPedro '17

@ElPedro更新了它,谢谢您的投入。
尼尔

1
如果重新排列参数以便读取,则?site=codegolf&inname="可以保存3个字节(+“”)
Malivil

1
使用from requests import*;a=get()减少一个字节!
Keerthana Prabhakaran

3

Groovy中,144个 156字节

{new groovy.json.JsonSlurper().parse(new URL("http://api.stackexchange.com/2.2/users/?site=codegolf&inname=$it")).items.collect{[it.user_id,it.reputation]}}

匿名关闭。

编辑:忘记使用groovy.json.JSON Slurper + 14个字节的导入。

示例输出[[UserID, Reputation],...]

[[20260, 60695], [20469, 21465], [3103, 8856], [41805, 7783], [134, 6829], [42643, 5622], [45268, 4389], [10732, 3976], [32, 3635], [53745, 3392], [10801, 3216], [49362, 2418], [2104, 2160], [3563, 1988], [18280, 1491], [742, 1466], [59487, 1362], [19039, 1330], [56642, 1133], [9522, 951], [34438, 886], [1744, 793], [52661, 778], [18187, 768], [11426, 751], [26850, 711], [178, 637], [29451, 631], [19700, 616], [15862, 601]]

8
JsonSlurper ... o_O
HyperNeutrino

slurrrrrrrrrp
Magic Octopus

@HyperNeutrino如果您有机会查看它,我认为它是我最喜欢的JSON解析库。它是如此容易。
魔术章鱼缸

好的,谢谢!我来看一下。
HyperNeutrino

0

Swift,225201字节

import Foundation;var f:(String)->Any={return try!JSONSerialization.jsonObject(with:Data(contentsOf:URL(string:"http://api.stackexchange.com/users?site=codegolf&filter=!)LgZAmQ6ls0hH&inname=\($0)")!))}

未打高尔夫球:

import Foundation

var f:(String) -> [String: Any] = {
    return try! JSONSerialization.jsonObject(with:Data(contentsOf:URL(string:"http://api.stackexchange.com/users?site=codegolf&filter=!)LgZAmQ6ls0hH&inname=\($0)")!)) as! [String:Any]
}

输出示例:

["items": <__NSArrayI 0x6180001ffc00>(
{
    reputation = 2820;
    "user_id" = 42295;
},
{
    reputation = 2468;
    "user_id" = 31203;
},
{
    reputation = 2106;
    "user_id" = 2800;
},
{
    reputation = 1479;
    "user_id" = 6689;
},
{
    reputation = 1287;
    "user_id" = 64424;
},
{
    reputation = 1037;
    "user_id" = 64070;
},
{
    reputation = 644;
    "user_id" = 25193;
},
{
    reputation = 641;
    "user_id" = 3171;
},
{
    reputation = 639;
    "user_id" = 743;
},
{
    reputation = 590;
    "user_id" = 33233;
},
{
    reputation = 571;
    "user_id" = 26993;
},
{
    reputation = 563;
    "user_id" = 1730;
},
{
    reputation = 321;
    "user_id" = 18570;
},
{
    reputation = 309;
    "user_id" = 39156;
},
{
    reputation = 291;
    "user_id" = 7880;
},
{
    reputation = 281;
    "user_id" = 25190;
},
{
    reputation = 261;
    "user_id" = 40820;
},
{
    reputation = 231;
    "user_id" = 14154;
},
{
    reputation = 206;
    "user_id" = 2774;
},
{
    reputation = 196;
    "user_id" = 48231;
},
{
    reputation = 181;
    "user_id" = 1230;
},
{
    reputation = 176;
    "user_id" = 64077;
},
{
    reputation = 171;
    "user_id" = 31365;
},
{
    reputation = 171;
    "user_id" = 43455;
},
{
    reputation = 163;
    "user_id" = 21469;
},
{
    reputation = 161;
    "user_id" = 11845;
},
{
    reputation = 157;
    "user_id" = 25181;
},
{
    reputation = 131;
    "user_id" = 263;
},
{
    reputation = 131;
    "user_id" = 3922;
},
{
    reputation = 128;
    "user_id" = 67227;
}
)
]
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.