সুতরাং… আপনার স্ট্যাকওভারফ্লো স্কোরটি কী?


21

এটি একটি সহজ। কোনও সংখ্যার ইনপুট দেওয়া হয়েছে, সেই প্রদত্ত আইডি দিয়ে স্ট্যাক ওভারফ্লো ব্যবহারকারীর নাম এবং খ্যাতি স্কোরটি ফিরিয়ে দিন । আপনার প্রোগ্রাম ধরে নিতে পারে যে এটি সর্বদা একটি বৈধ এবং বিদ্যমান ব্যবহারকারী আইডি দেওয়া হয়।

উদাহরণস্বরূপ: ইনপুট দেওয়া 764357(যা স্ট্যাকওভারফ্লোতে আমার ইউজারআইডি) প্রোগ্রামটি ফিরে আসবে LegoStormtroopr 3,088(প্রায়) এটি পরিবর্তিত হতে পারে।

": যদি আপনি URL টি পেতে /programming//users/ " বা " http://api.stackexchange.com/2.1/users/ তাই আপনার স্কোর হল, বিনামূল্যে জন্য" length of your program - 31 or 39, যা আপনি যে URL টি ব্যবহার করেন তার উপর নির্ভর করে - কিন্তু এটি যা ঘোষণা । এটি লোকেদের ইউআরএল সংক্ষিপ্তকরণ থেকে বিরত রাখে।

সম্পাদনা করুন: এবং কোনও কাস্টম তৈরি করা এপিআই কল করছে না যা স্ট্যাক ওভারফ্রোকে কোয়েরি করে এবং কেবল নাম এবং স্কোর দেয় না। তবে আপনি যদি কোনও অফিশিয়াল এপিআই সম্পর্কে জানেন তবে তা সম্পূর্ণ বৈধ।

সম্পাদনা 2: আপনার যদি উদাহরণের ইনপুট দরকার হয়: আমি নীচে আমার আইডি দিয়েছি, অন্যকে সাহায্য করার জন্য আপনার নিজের আইডি, ব্যবহারকারীর নাম এবং নীচে স্কোর যুক্ত করতে দ্বিধা বোধ করবেন আবার নোট করুন, এটি মূল স্ট্যাক ওভারফ্লো সাইটের জন্য।

764357   returns   LegoStormtroopr 3,088

হুম ... সেই প্রতিনিধির সাথে যদি একাধিক ব্যবহারকারী থাকে তবে আমাদের কি একটি বাছাই করা উচিত, বা তাদের সমস্ত প্রদর্শন করা উচিত? এরকম কোনও ব্যবহারকারী না থাকলে কী হবে?
জন ডিভোরাক

2
আহ ... অপেক্ষা করুন ... সেই স্কোর ব্যবহারকারীর, বা সেই আইডি ব্যবহারকারীর?
জন ডিভোরাক

@ জনডভোরাক আমি স্পষ্ট করার চেষ্টা করেছি। প্রোগ্রামটির ব্যবহারকারীর আইডি গ্রহণ করা উচিত এবং সেই আইডি সহ ব্যবহারকারীকে পুনরায় স্কোর করা উচিত।

1
URL উচিত http://api.stackexchange.com/2.1/users/এছাড়াও API- এর ব্যবহারকারীদের দণ্ড আরোপ এড়াতে "মুক্ত" হতে পারে?
gnibbler

1
আমরা কি site=stackoverflowঅংশটি নিখরচায় পেতে পারি ?
জোহানেস কুহন

উত্তর:


15

শেল স্ক্রিপ্ট: 64 51 টি অক্ষর

curl -sL http://stackoverflow.com/users/`cat`|grep -oPm2 'n">\K[0-9,]+|e">\K[^<]+'

নমুনা রান:

bash-4.1$ curl -sL http://stackoverflow.com/users/`cat`|grep -oPm2 'n">\K[0-9,]+|e">\K[^<]+'
662504
manatwork
834

bash-4.1$ curl -sL http://stackoverflow.com/users/`cat`|grep -oPm2 'n">\K[0-9,]+|e">\K[^<]+'
764357
Lego Stormtroopr
3,087

(দ্রষ্টব্য যে আপনাকে ^Dইন্টারপেক্টিভভাবে ইনপুট টাইপ করার পরে টিপতে হবে Or অথবা কেবলমাত্র কমান্ডটিতে এটি পাইপ করুন))


8

রুবি: 84 70 টি অক্ষর

s=open("http://stackoverflow.com/users/"+gets).read
puts s[/me">(.+)</,1],s[/n">([\d,]+)/,1]

নমুনা রান:

bash-4.1$ ruby -ropen-uri -e 's=open("http://stackoverflow.com/users/"+gets).read;puts s[/me">(.+)</,1],s[/n">([\d,]+)/,1]' <<< '662504'
manatwork
834

bash-4.1$ ruby -ropen-uri -e 's=open("http://stackoverflow.com/users/"+gets).read;puts s[/me">(.+)</,1],s[/n">([\d,]+)/,1]' <<< '764357'
Lego Stormtroopr
3,087

1
রেজেক্সে আপনার পুরো শব্দের দরকার নেই: s[/me">(.+)</,1],s[/ation".*?([\d,]+)/,1]কাজ করছে বলে মনে হচ্ছে
নিল স্লেটার

সঠিক। এগুলি সবেমাত্র আমার শেল স্ক্রিপ্ট উত্তর থেকে নেওয়া হয়েছিল । ( grepকেবল "
অশন

@ ডুরকনব, সম্ভবত আপনি -ropen-uriবিকল্পটি বাদ দিয়েছেন । (এটি বাধ্যতামূলক এবং চরিত্রের গণনায় অন্তর্ভুক্ত))
manatwork

@ মান্যাটওয়ার্ক আহ, সেটা লক্ষ্য করেনি। ঠিক আছে এখন এটি কাজ করে।
ডুরকনব


6

পাইথন 3, 117

117 = 148 - 31

আমি মনে করি না যে সরল এইচটিএমএল উত্স কোড অনুসন্ধান করা শক্তিশালী সমাধানের দিকে নিয়ে যাবে। উদাহরণস্বরূপ, কারও প্রোফাইলে কিছু অদ্ভুত জিনিস আপনার সমাধানগুলি ভঙ্গ করতে পারে। তাই আমি সিএসএস নির্বাচক ব্যবহার করে অনুসন্ধান করতে চাই।

from lxml.html import*
C=parse('http://stackoverflow.com/users/'+input()).getroot().cssselect
print(C('[id^=u]')[0].text,C('[class$=ore]')[0].text)

5

জাভাস্ক্রিপ্ট 217

শুরু করার জন্য, জেএসএনপি-র সাথে অফিশিয়াল এপিআই ব্যবহার করে হরিস একটি অব্যক্ত জাভাস্ক্রিপ্ট সংস্করণ। ইউআরএল ব্যবহারের জন্য এক্সএইচআর প্রয়োজন হবে, যা বেশ ভার্জোজ হবে, যদি আমি কিছু সময় পাই তবে আমি আরও গল্ফযুক্ত সংস্করণ চেষ্টা করব।

d=document;function f(a){y=a.items[0];alert(y.display_name+" "+y.reputation)}x=d.createElement("script");x.src="https://api.stackexchange.com/2.1/users/"+prompt()+"?site=stackoverflow&callback=f";d.body.appendChild(x)

5

পার্ল 5 (মোজোলিসিস সহ), 87 - 31 = 56 বাইট

say/h1.*>(.*)</,$/,/core">(.*?)</ for g("http://stackoverflow.com/users/".pop)->dom

নমুনা রান:

$ perl -Mojo -E 'say/h1.*>(.*)</,$/,/core">(.*?)</ for g("http://stackoverflow.com/users/".pop)->dom' 764357
Lego Stormtroopr
3,103

পাঠযোগ্য ও পরিষ্কার: 128 - 31 = 97 বাইট tes

say $_->at("#user-displayname")->text, ": ", $_->at(".reputation a")->text for g("http://stackoverflow.com/users/".pop)->dom

নমুনা রান:

$ perl -Mojo -E 'say $_->at("#user-displayname")->text, ": ", $_->at(".reputation a")->text for g("http://stackoverflow.com/users/$ARGV[0]")->dom' 764357
Lego Stormtroopr: 3,103

1
হয় -Mojoগণনা মধ্যে অন্তর্ভুক্ত? এটির জন্য 4 টি অক্ষর রয়েছে।
manatwork

@ মানাটওয়ার্ক: না, আমি এটিকে গণনায় অন্তর্ভুক্ত করি নি, কারণ রুবি উত্তর অন্তর্ভুক্ত করে নি -ropen-uri। যাইহোক, আপনার মন্তব্যটি যদি সম্প্রদায় এগুলি গণনা করতে চায় বলে ইঙ্গিত হিসাবে কিছু মন্তব্য পেয়ে যায় তবে আমি এটি অন্তর্ভুক্ত করতে পেরে আনন্দিত।
ম্যাথিয়াস

আবার গণনা। এটা অন্তর্ভুক্ত. পেস্টবিন.
com

2
ঠিক আছে, আমি আশা করি আমাদের গণনা বিধি সম্পর্কে একটি সঠিক ডকুমেন্টেশন আছে, তবে আমি জানি, এর কোনওটিই নেই। একটি জিনিস নিশ্চিত: perlএর -pবিকল্পটি সাধারণত +1 গণনা করা হয়। তার ভিত্তিতে আমি -Mojo+4 গণনা করি ।
manatwork

1
নিয়মগুলির একটি সেট এখানে আমরা কয়েকবার ব্যবহার করেছি।
জেবি

4

আর: 150-31 = 119

f=function(i){S=function(x)strsplit(grep(x,scan(paste0("http://stackoverflow.com/users/",i),"",sep="\n"),v=T)[1],">|<")[[1]][3];cat(S("h1"),S("=re"))}

তাত্ক্ষণিকভাবে যুক্তি (এখানে ) ব্যবহার করে ( h1নামের জন্য) এবং =re(স্কোরের জন্য ) যুক্ত প্রথম রেখাগুলি বেছে নেয় এবং তারপরে স্ট্রিংটি বিভক্ত করুন ( অক্ষরগুলিতে ব্যবহার করে এবং সুবিধামতভাবে পৃষ্ঠাটি দু'বার অনুসন্ধান করে (অতএব দুটি "এন আইটেম পড়ুন" সতর্কবার্তা) তবে তা কম ছিল।grepvalue=TRUEv=Tstrsplit><

>f(1451109)
Read 917 items
Read 917 items
plannapus 6,566

4

টিসিএল, (231 - 39) 192

সবচেয়ে ছোট উপায় নয়, তবে অফিসিয়াল এপিআই ব্যবহার করুন

package r http
package r json
set d [lindex [dict get [json::json2dict [http::data [http::geturl http://api.stackexchange.com/2.1/users/$argv?site=stackoverflow]]] items] 0]
puts [dict get $d display_name]\ [dict get $d reputation]

এবং মূল প্রশ্নের উদ্দীপনায় :

package r http
package r json
set c [dict get [json::json2dict [http::data [http::geturl http://api.stackexchange.com/2.1/users/?order=desc&sort=reputation&site=stackoverflow&min=$argv&max=$argv]]] items]
foreach d $c {puts "[dict get $d display_name] [dict get $d reputation]"}

সেই সুনামের সাথে ব্যবহারকারীদের সন্ধান করে


দুঃখিত যে মিশ্রণ সম্পর্কে!

@ লেগোস্টোরমাট্রোপ্র: আমি যখন এই উত্তরটি লিখেছিলাম যে আপনি ইউজারিড বলতে চাইছেন তখন আমি এই উত্তরটি লিখেছিলাম, তবে আমি এটি দেখাতে পছন্দ করি যে সরকারী এপিআই মূল প্রশ্নটিও সমাধান করতে সক্ষম।
জোহানেস কুহন

3

সংক্ষিপ্ত কফিস্ক্রিপ্ট: 143 টি অক্ষর (182 - 39)

এটি সর্বদা একই ক্রমে অবজেক্ট কীগুলি ফিরিয়ে দেয় এমন এপিআই-র উপর নির্ভর করে তবে 7 টি অক্ষর ছাঁটাই করে।

f=(r)->u=Object.keys(items[0]);alert u[3]+' '+u[5]
d=document
j=d.createElement('script')
j.src="//api.stackexchange.com/2.1/users/"+prompt()+'?site=diy&jsonp=f'
d.body.appendChild j

কফিস্ক্রিপ্ট: 150 টি অক্ষর (189 - 39)

f=(r)->u=r.items[0];alert u.display_name+' '+u.reputation
d=document
j=d.createElement('script')
j.src="//api.stackexchange.com/2.1/users/"+prompt()+'?site=diy&jsonp=f'
d.body.appendChild j

(নোট করুন যে প্রোগ্রামটি আপনাকে "অপরিজ্ঞাত" করার জন্য অনুরোধ করে - এটি ব্যবহারকারীর আইডি চাইছে))


3

আর - 84

84 = 115 - 31

sub(".*\\/(.*)\\?.*>(.*)<.*","\\1 \\2",grep("b=r",scan(paste0("http://stackoverflow.com/users/",scan(n=1)),""),v=T)[1])

সিমুলেশন:

> sub(".*\\/(.*)\\?.*>(.*)<.*","\\1 \\2",grep("b=r",scan(paste0("http://stackoverflow.com/users/",scan(n=1)),""),v=T)[1])
1: 1201032
Read 1 item
Read 2976 items
[1] "flodel 31,093"

+1 এটি নিয়মিত প্রকাশের খুব চিত্তাকর্ষক ব্যবহার।
সোভেন হোহেনস্টেইন

3

101 100 - jQuery সহ কফিস্ক্রিপ্ট

$.getJSON "http://api.stackexchange.com/2.1/users/#{prompt()}?site=stackoverflow",(d)->alert [d.items[0].reputation,d.items[0].display_name]

এখানে একটি ঝাঁকুনি ; কেবলমাত্র জেনে রাখুন যে আপনি পৃষ্ঠাটি প্রথম খোলার সময় আপনাকে অনুরোধ জানায়, সুতরাং একটি আইডি প্রস্তুত রাখুন, বা আবার চালিত চাপুন।

বা আমরা পুরো চরিত্রটি সংরক্ষণ করতে সুপার হ্যাকি হতে পারি!

$.getJSON "http://api.stackexchange.com/2.1/users/#{prompt()}?site=stackoverflow",(d)->`with(d.items[0])alert([reputation,display_name])`;1

2

পাইথন 2.7 - 112

112 = 143 - 31

একটি নতুন, সংক্ষিপ্ত সংস্করণ যা এখনও স্টেভেন রাম্বালস্কি উত্তর থেকে কিছু ধারণা ব্যবহার করে, এখনও রেগেস ব্যবহার করার সময়।

import urllib,re
r=re.findall('r (.*?) -|re">(.*?)<',urllib.urlopen("http://stackoverflow.com/users/%d"%input()).read())
print r[0][0],r[2][1]

133 = 164 - 31

লোকেরা থেকে কাজ করার জন্য এখানে একটি বেস সংস্করণ রয়েছে তবে আমি নিশ্চিত যে লোকেরা আরও ছোট হতে পারে।

import urllib,re
u=input()
s=urllib.urlopen("http://stackoverflow.com/users/%d"%u).read()
r=re.findall('name.*?>(.*?)</h1|tion.?>(.*?)</a',s)
print r[0][0],r[1][1]

এটি কাজ করে না বলে মনে হচ্ছে। http://stackoverflow.com/users/12340404.
জন ডিভোরাক

@ জনডভোরাক, এর 499214পরিবর্তে চেষ্টা করুন12340
পিটার টেলর

@ পিটারটেলর তারপর প্রশ্নটি ভুল।
জন ডিভোরাক

2
@ জানডভোরাক স্পষ্টতই, সেই আইডি সহ ব্যবহারকারী উপস্থিত নেই।

1

জিএনইউ আওক: 217 টি অক্ষর

জিএনইউ awkটিসিপি স্থানীয়ভাবে সমর্থন করে কারণ : কোনও মডিউল / গ্রন্থাগার / বাহ্যিক সরঞ্জাম নেই।

{RS="\r"
print h("/users/"$0,$0,"/",4),h($2,$2"\\?","<|>",3)}function h(p,m,r,f){d="stackoverflow.com"
g="/inet/tcp/0/"d"/80"
print"GET "p" HTTP/1.1\nHost:"d"\n"|&g
close(g,"to")
while(g|&getline)if($0~m){close(g,"from")
split($0,a,r)
return a[f]}}

নমুনা রান:

bash-4.1$ awk '{RS="\r";print h("/users/"$0,$0,"/",4),h($2,$2"\\?","<|>",3)}function h(p,m,r,f){d="stackoverflow.com";g="/inet/tcp/0/"d"/80";print"GET "p" HTTP/1.1\nHost:"d"\n"|&g;close(g,"to");while(g|&getline)if($0~m){close(g,"from");split($0,a,r);return a[f]}}' <<< 662504
manatwork 854

bash-4.1$ awk '{RS="\r";print h("/users/"$0,$0,"/",4),h($2,$2"\\?","<|>",3)}function h(p,m,r,f){d="stackoverflow.com";g="/inet/tcp/0/"d"/80";print"GET "p" HTTP/1.1\nHost:"d"\n"|&g;close(g,"to");while(g|&getline)if($0~m){close(g,"from");split($0,a,r);return a[f]}}' <<< 764357
lego-stormtroopr 3,947
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.