คำนวณชื่อเสียงของผู้ใช้


12

ท้าทาย

ด้วยชื่อของผู้ใช้(ไม่ใช่ ID เรามีความท้าทายนั้นอยู่แล้ว) ส่งออกชื่อเสียงปัจจุบันและรหัสของพวกเขา

อินพุต

อินพุตจะเป็นสตริงเดียวซึ่งเป็นชื่อผู้ใช้ของผู้ใช้ คุณอาจสันนิษฐานว่ามีผู้ใช้รายนี้อยู่

เอาท์พุต

เอาต์พุตจะเป็นจำนวนเต็มสองจำนวนถึง STDOUT หรือ STDERR ซึ่งจะเป็นชื่อเสียงของผู้ใช้และ ID ของผู้ใช้ พวกเขาจะต้องอยู่ในลำดับที่เฉพาะเจาะจงและสามารถส่งออกในรูปแบบที่เหมาะสม

ข้อมูลจำเพาะ

  • ชื่อเสียงที่ส่งออกจะต้องไม่เกิน 10 นาที
  • โปรแกรมของคุณต้องไม่เกิดข้อผิดพลาดระหว่างการดำเนินการตามปกติ
  • ใช้ช่องโหว่มาตรฐาน (รวมถึงไม่มีตัวย่อ URL)
  • หากมีชื่อผู้ใช้มากกว่าหนึ่งรายคุณสามารถส่งออกสถิติของผู้ใช้ด้วยชื่อผู้ใช้นั้น นี่คือเหตุผลที่คุณต้องส่งออก ID
  • ชื่อเสียงที่จะส่งออกเป็นชื่อเสียงของผู้ใช้บน PPCG ไม่ใช่คะแนนรวมเครือข่าย

เว็บไซต์กองแลกเปลี่ยน API สามารถพบได้ที่นี่ คุณสามารถอ่านเอกสารได้จากที่นั่น


ลิงก์ API การแลกเปลี่ยนสแต็ก
Magic Octopus Urn

@carusocomputing จะทำอย่างไรขอบคุณ ฉันต้องแก้ไขบางสิ่งเพราะเห็นได้ชัดว่าผู้ใช้หลายคนสามารถมีชื่อเดียวกันได้
HyperNeutrino

ฉันคิดว่ากฎนี้ใช้หรือไม่ นอกจากนี้คุณสามารถยืนยันได้ว่าเป็นชื่อเสียงโดยรวมของผู้ใช้บน PPCG มากกว่า SE หรือไม่?
Arnauld

@Arnauld ฉันจะตอบว่าใช่ และฉันยืนยันว่ามันเป็นเพียงชื่อเสียง PPCG ฉันจะชี้แจงว่าในการท้าทาย ขอบคุณ
HyperNeutrino

ดีฉันทำรายการT-SQL นี้แต่มันไม่เป็นไปตามกฎ 1 เพราะมันไม่ได้อัปเดตพอ :(
ʰᵈˑ

คำตอบ:


1

Bash + JQ , 93 ไบต์

ย้อนกลับเวอร์ชัน 87 ไบต์เนื่องจากไม่สามารถตอบสนองผู้ใช้หลายคนได้อย่างถูกต้อง

แข็งแรงเล่นกอล์ฟ

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

จะแสดงผล user id แรกและชื่อเสียงในบรรทัดแยกต่างหาก

มันทำงานอย่างไร ?

1) curl + zcatใช้เพื่อดึงการตอบกลับ API ที่จัดรูปแบบของ JSON

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_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)

บันทึก 6 ไบต์ขอบคุณ Shaggy และ 6 ไบต์ขอบคุณ Cyoce

ฉันไม่แน่ใจว่าควรส่งออกผู้ใช้ทั้งหมดด้วยชื่อเดียวกันหรือเพียงแค่หนึ่งในนั้น รหัสนี้ส่งออกทั้งหมดของพวกเขา

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

หมายเหตุ: ดูเหมือนว่าคุณจะได้ผลลัพธ์มากกว่าที่ควร (ควร) ฉันพยายามรับฟังความคิดเห็นของ HyperNeutrino ในสิ่งที่เหมาะสม แต่ผลลัพธ์ของคุณจะส่งคืนค่าสำหรับผู้ใช้ที่ชื่อมีเพียงข้อมูลเข้า - ไม่ตรงกันทั้งหมด ดังนั้นผลลัพธ์อันดับแรกของคุณคือสำหรับ "Tom Carpenter" และไม่ใช่ "tom"
Dason

มันจะเป็นไปได้ที่จะแทนที่_=>alert(_)ด้วยเพียงalert?
Cyoce

@Dason Yep นั่นคือจุดหนึ่งที่ฉันไม่แน่ใจ ฉันจะเปลี่ยนคำตอบเมื่อได้รับการยืนยัน
ทอม

@Cyoce ขอบคุณมาก!
ทอม

4

Python 2, 178 169 149 Bytes

ฉันต้องการใช้สิ่งนี้:

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, Keerthana Prabhakaran


["items"][0]สิ่งนี้จะได้รับผลลัพธ์แรกเท่านั้นในกรณีที่ผู้ใช้หลายรายจะยังคงเพิกเฉยต่อความพิเศษหากฉันไม่เข้าใจผิด
Magic Octopus Urn

import requests as rและr.get(...บันทึก 4 ไบต์
ElPedro

@ElPedro อัปเดตขอบคุณสำหรับอินพุต
Neil

1
หากคุณจัดเรียงพารามิเตอร์ใหม่เพื่อให้?site=codegolf&inname="สามารถอ่านได้คุณสามารถบันทึก 3 ไบต์ (+ "")
Malivil

1
ใช้from requests import*;a=get()ลดไบต์!
กีรนาปราการะรัน

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

slurrrrrrrrp
Magic Octopus Urn

@HyperNeutrino หากคุณเคยมีโอกาสได้ดูฉันคิดว่ามันเป็นห้องสมุดการแยกวิเคราะห์ JSON ที่ฉันโปรดปราน มันง่ายมาก.
Magic Octopus Urn

เอาล่ะขอบคุณ! ฉันจะดูมัน
HyperNeutrino

0

สวิฟต์225 225ไบต์

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.