ユーザーの評判を計算する


12

チャレンジ

ユーザーの名前(IDではなく、私たちはすでにその課題を持っています)が与えられたら、現在の評判とIDを出力します。

入力

入力は、ユーザーのユーザー名である単一の文字列になります。このユーザーが存在すると想定できます。

出力

出力は、STDOUTまたはSTDERRへの2つの整数になり、ユーザーの評判とユーザーのIDになります。それらは特定の順序である必要があり、任意の合理的な形式で出力できます

仕様

  • レピュテーションの出力は、10分以上古いものであってはなりません。
  • プログラムは通常の実行中にエラーをスローしない場合があります
  • 標準の抜け穴が適用されます(URL短縮機能なしを含む)
  • そのユーザー名を持つユーザーが複数いる場合、そのユーザー名を持つユーザーの統計情報を出力できます。これが、IDを出力する必要がある理由でもあります。
  • 出力される評判は、ネットワークの合計スコアではなく、PPCGでのユーザーの評判です。

Stack Exchange APIサイトはこちらにあります。そこからドキュメントを読むことができます。


スタック交換APIをリンクします。
魔法のタコUr

@carusocomputing感謝します。どうやら複数のユーザーが同じ名前を持つことができるため、何かを修正する必要もあります。
ハイパーニュートリノ

このルールが適用されると思いますか?また、SEではなくPPCGでのユーザーの総合評価であることを確認できますか?
アーナルド

@Arnauldはいと言います。そして、それは単なるPPCGの評判であることを確認します。これをチャレンジで明確にします。ありがとう。
ハイパーニュートリノ

さて、私はこれやったT-SQLエントリを、それが十分に:(を更新していないとして、それはルール1を満たしていない
ʰᵈˑ

回答:


1

Bash + JQ、93バイト

マルチユーザー応答を正しく処理していなかったため、87バイトバージョンをロールバックしました。

ゴルフ

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

最初のユーザーIDとレピュテーションを別々の行に出力します。

使い方 ?

1)curl + zcatJSON形式のAPI応答を取得するために使用されます

2)jq ..|numbersJSONを再帰的に展開し、すべての数値を1行に1つずつ出力します

...
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_idおよびをreputation、それらの絶対行番号で検索するために使用します

テスト

>./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バイト節約されました。

同じ名前のすべてのユーザーを出力するのか、それとも1人だけを出力するのかはわかりません。このコードはすべてを出力します。

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
シャギー

注:(おそらく)本来よりも多くの結果を返すようです。何が適切かについてHyperNeutrinoのフィードバックを取得しようとしてきましたが、結果は、名前が入力のみを含む(完全に一致しない)ユーザーの値を返します。したがって、上位の結果は「Tom」ではなく「Tom Carpenter」です。
デイソン

_=>alert(_)だけで置き換えることは可能でしょうalertか?
チョイス

@Dason Yep、それは私が確信していなかった1つのポイントです。確認できたら回答を変更します。
トム

@Cyoceうまくいきました、ありがとう!
トム

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、Kerertana Prabhakaran


["items"][0]これは最初の結果のみを取得します。複数のユーザーの場合、私が間違えなければ余分なものを無視します。
魔法のタコUr

import requests as rr.get(...4バイトを節約します。
エルペドロ

@ElPedroはそれを更新しました、入力に感謝します。
ニール

1
読み込むようにパラメーターを再配置すると、?site=codegolf&inname="3バイト(+ "")を保存できるようになります
マリビル

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
魔法のタコ

@HyperNeutrinoあなたがそれを見る機会があれば、私はそれを私のお気に入りのJSON解析ライブラリと考えています。非常に簡単。
魔法のタコUr

わかりました、ありがとう!それを見てみましょう。
ハイパーニュートリノ

0

スイフト、225 201バイト

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;
}
)
]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.