আমার পিপিসিআই আইডি কি?


16

চ্যালেঞ্জ

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

পরীক্ষার কেস

"musicman523" -> 69054
"ডেনিস" -> 12012
"xnor" -> 20260
"ফুটো নুন" -> 48934
"fəˈnɛtɪk" -> 64505
"জার্গ হালসারম্যান" -> 59107
"সম্প্রদায়" -> -১
"যে কোনও ব্যবহারকারীর অস্তিত্ব নেই" -> 0
"অ্যালেক্স" -> 69198 (এটি একটি সম্ভাব্য ফলাফল)
"ফাঁসী এন" -> 0
"জর্জি" -> 3716

1
প্রস্তাবিত পরীক্ষার কেস: "লিকি এন"। ০.
Okx

5
আমাদের প্রোগ্রামের ফলে কি অস্তিত্বহীন ব্যবহারকারীর জন্য অপরিজ্ঞাপিত আচরণের ফলাফল হতে পারে (খনি প্রিন্ট 48934, উদাহরণস্বরূপ অ-বিদ্যমান ব্যবহারকারীর জন্য)? আমি মনে করি এটির অনুমতি দেওয়া উচিত, যেহেতু ত্রুটি রয়েছে।
মিঃ এক্সকোডার

4
@ অক্স না, আমি না আমি ওপিকে জিজ্ঞাসা করছি যদি এই আচরণের অনুমতি দেওয়া হয়। যদি তা না হয় তবে আমি আমার উত্তর মুছে ফেলব বা ঠিক করব।
মিঃ এক্সকোডার

3
@ অলিভারনি বিষাক্ত? কিভাবে?
Okx

5
@ ওকএক্স তিনি ওপিকে একটি বৈধ প্রশ্ন জিজ্ঞাসা করছেন এবং আপনি তাকে তাত্ক্ষণিকভাবে গুলি করছেন। ওপি উত্তর দিন।
অলিভার নি

উত্তর:


30

স্ট্যাক এক্সচেঞ্জ ডেটা এক্সপ্লোরার , 56 54 53 51 46 বাইট

হাইপার নিউট্রিনো -1 বাইট ধন্যবাদ। -5 বাইট জিয়াকোমো গারাবেলোকে ধন্যবাদ।

SELECT ID FROM USERS WHERE##S##=DISPLAYNAME--S

এটি অনলাইন চেষ্টা করুন!

এটি পুরোপুরি বৈধ কিনা তা নিশ্চিত না তবে ... ইনপুট অবশ্যই একক উদ্ধৃতিতে ঘিরে থাকতে হবে '

এছাড়াও, আমি এখনও কেন চিৎকার করে বলতে চাই এসকিউএল প্রোগ্রামারদের পাবেন না কিন্তু এটি দৃশ্যত তাই ভাল অনুশীলন ... এর SELECTসবকিছু FROMসবকিছু WHEREসবকিছু LIKEসবকিছু!

ব্যাখ্যা

আমাকে ব্যাখ্যা করতে দাও.

SELECT ID FROM USERS WHERE##S##=DISPLAYNAME--S

                                           --S  -- DECLARE AN INPUT PARAMETER NAMED S
SELECT                                          -- FIND...
       ID                                       -- ID OF THE USERS...
          FROM USERS                            -- IN THE TABLE USERS...
                     WHERE                      -- THAT SATISFIES THE CONDITION...
                          ##S##=DISPLAYNAME     -- S EQUALS THE USERS' DISPLAY NAME

13
-2 সমান চিহ্ন সন্ধানের স্থানগুলি সরিয়ে দিয়ে -2 বাইটস
হাইপার নিউট্রিনো

1
নিনজা আপনার চ্যাট
এক্সডে নিনজা

1
সাম্যতা অপারেটরের আশেপাশে
অপারেশনের ক্রমটি উল্টিয়ে

10
এসকিউএল প্রোগ্রামারদের চিৎকার করতে পছন্দ করে এমন রেফারেন্সের জন্য +1 (এবং আপনার উত্তরের জন্য ভাষার একটি পছন্দ পছন্দ :)
এনএইচ।

4
কেন আপনি এই কোয়েরিতে শীর্ষ 1 রেখেছেন? ওপি বলেছিল "এই নামের সাথে যদি একাধিক সদস্য থাকে তবে আপনি কেবল একটি আইডি বা তাদের সকলের আউটপুট চয়ন করতে পারেন" ...
গিয়াকোমো গারাবেলো

5

জাভাস্ক্রিপ্ট, 155 149 142 135 বাইট

i=>fetch("//api.stackexchange.com/users?site=codegolf&inname="+i).then(r=>r.json()).then(r=>r.items.find(u=>u.display_name==i).user_id)

f=i=>fetch("//api.stackexchange.com/users?site=codegolf&inname="+i).then(r=>r.json()).then(r=>r.items.find(u=>u.display_name==i).user_id)
<input onchange="f(this.value).then(console.log)"><br>Fill input and press Enter


1
এটি কি এর মতো বিশেষ চরিত্রগুলিকে সমর্থন করে Jörg Hülsermann?
আর্নল্ড

4
এটি এর 0জন্য ফিরে এসেছে Oliver:(
অলিভার

প্রতিস্থাপন 7 বাইট সংরক্ষণ r=>r.items[0]).then(rসঙ্গে ({items:[r]})নিয়োগ ডেসট্রাকচারিং FTW!
kamoroso94

আপনি ব্যবহার করতে পারেন: i=>fetch('//api.stackexchange.com/users?site=codegolf&inname='+i).then(r=>r.json()).then(r=>r.items[0].user_id)এটি যদি ব্যর্থ হয় তবে কোনও প্রতিশ্রুতি ত্রুটিটি ফিরিয়ে দেবে। আপনি কেবলমাত্র এটি করতে i=>fetch('/users?site=codegolf&inname='+i).then(r=>r.json()).then(r=>r.items[0].user_id)এবং বলতে পারেন এটি এপিআই ডোমেনে চালানো দরকার
ডাউনগোট

2
@ অলিভার আর কি অলিভার ???? কেবলমাত্র এক হতে পারে
অলিভার নি

5

পাইথন 3 + অনুরোধ , 196 বাইট

ধন্যবাদ @ ওয়ানড্রিকেট -6 বাইটের জন্য!

from requests import*
x=lambda s:all([print(a['user_id'])if s==a['display_name']else''for a in get('http://api.stackexchange.com/users?inname=%s&site=codegolf'%utils.quote(s)).json()['items']])and d

স্ট্যাক এক্সচেঞ্জ এপিআই ব্যবহার করে। ফিক্সড Leaky Nএবং Jorgeত্রুটি।

যদি একই নামের একাধিক ব্যবহারকারী থাকে তবে এটি তাদের সকলকে মুদ্রণ করে, যা অনুমোদিত।


এটি আমাকে গিজিপড ডেটা দেয় ..
অলিভার নি

ইনপুট ব্যর্থ Leaky N
Okx

@ ওকক্স ফিক্সড ---
অলিভার নি

যেহেতু আপনি "ত্রুটিটি রিপোর্ট করতে বা ০ টি ফিরে" ব্যবহার করতে পারেন যদি ব্যবহারকারীর অস্তিত্ব থাকে না, তাই শেষ লাইনটি কি ঠিক হতে পারে না print a['user_id'], যা কী-ইরর ফেলে দেবে?
ড্যানিয়েল

1
"জর্জি" এর জন্য ব্যর্থ
ফিলিপ নার্দি

5

পাইথন 2 + অনুরোধ , 187 বাইট

from requests import*
def f(x):t=get("http://api.stackexchange.com/users?inname="+utils.quote(x)+"&site=codegolf").json()["items"];print[k['user_id']for k in t if k['display_name']==x][0]

কোনও একক ব্যবহারকারীর উপস্থিতি থাকলে ব্যবহারকারী আইডি, প্রথম ব্যবহারকারী যা আরও উপস্থিত থাকলে প্রয়োজনীয়তার সাথে মেলে এবং অন্যথায় ত্রুটি প্রতিবেদন করে Return


আপনি /2.2API- url থেকে সরাতে পারেন remove
কেভিন ক্রুইজসেন

@ কেভিন ক্রুইজসেন অনেক ধন্যবাদ
মিঃ এক্সকোডার

ইঙ্গিত : এটি দিয়ে চালানোর চেষ্টা করবেন না fəˈnɛtɪk, \u{...}পরিবর্তে ব্যবহার করুন, কারণ পাইথন অ-এএসসিআইআই সহ্য করে না
মিঃ এক্সকডার

পাইথন 2, যাইহোক।
সম্পূর্ণরূপে

3
"জর্জি" এর জন্য ব্যর্থ
ফিলিপ নার্দি

3

পাইথন 2 + অনুরোধ , 173 বাইট

lambda s:[i['user_id']for i in get('http://api.stackexchange.com/users?inname=%s&site=codegolf'%utils.quote(s)).json()['items']if i['display_name']==s]
from requests import*

নমুনা রান

>>> f=\
... lambda s:[i['user_id']for i in get('http://api.stackexchange.com/users?inname=%s&site=codegolf'%utils.quote(s)).json()['items']if i['display_name']==s]
>>> from requests import*
>>>
>>> tests = ['musicman523', 'Dennis', 'xnor', 'Leaky Nun', 'Community', 'Any user that does not exist', 'Alex', 'Leaky N', 'Jorge']
>>> for i in tests: print '%-30r -> %s'%(i, f(i))
... 
'musicman523'                  -> [69054]
'Dennis'                       -> [12012, 13891, 14912, 24937]
'xnor'                         -> [20260]
'Leaky Nun'                    -> [48934]
'Community'                    -> [-1]
'Any user that does not exist' -> []
'Alex'                         -> [21536, 69198, 11192]
'Leaky N'                      -> []
'Jorge'                        -> [3716]

মজাদার ঘটনা: ফলাফলটি খ্যাতি অনুসারে বাছাই করা হয়, সর্বোচ্চ।


ইনপুট ব্যর্থLeaky N
Okx

সাথে দুর্দান্ত কৌশল %s
মিঃ এক্সকোডার

@ ওকএক্স আমার পক্ষে নয়, তা হয় না। >>> f('Leaky N')\n48934
সম্পূর্ণরূপে

@totallyhuman এটি ফিরে আসা উচিত 0Leaky Nঅস্তিত্ব নেই
Okx

@ ওকক্স ফিক্সড - -
সম্পূর্ণরূপে

3

জাভাস্ক্রিপ্ট, 128 119 বাইট

-9 বাইটস রোজেমকে ধন্যবাদ ।

n=>fetch("198.252.206.16/users?site=codegolf&inname="+n).then(r=>r.text()).then(t=>t.match(`\\/([^\\/]*)\\/`+n+`"`)[1])

1
ভাবুন আপনি আইপিভি 4 ঠিকানা দিয়ে কিছু বাইট সংরক্ষণ করবেন save (198.252.206.16 api.stackexchange.com এর পরিবর্তে)

-1

জাভাস্ক্রিপ্ট (ES6) + এইচটিএমএল, 154 152 151 202 179 161 145 বাইট

বিশেষ অক্ষরগুলি পরিচালনা করতে কয়েক বাইট ত্যাগ করেছেন।

api.stackexchange.comডোমেনের অধীনে চালানো দরকার । আইডি সম্বলিত একটি প্রতিশ্রুতি দেয় বা ব্যবহারকারী নামটি খুঁজে পাওয়া না গেলে প্রতিশ্রুতিতে একটি ত্রুটি নিক্ষেপ করে।

s=>fetch(`/users?site=codegolf&inname=`+s).then(r=>r.json()).then(j=>j.items.find(i=>(o.innerHTML=i.display_name,o.innerText==s)).user_id)

<a id=o

দ্রষ্টব্য: এই সমাধানটি স্বাধীনভাবে উরিলের এবং তার মন্তব্যে তৈরি করা হয়েছিল; যদি উরিল findপদ্ধতিটি ব্যবহার করার সিদ্ধান্ত নেন তবে আমি আমার দীর্ঘ, পুনরাবৃত্ত সংস্করণে ফিরে আসতে পেরে খুশি।


2
আমি একটি নির্দিষ্ট এক্সিকিউশন ডোমেনের প্রয়োজনে একটি মেটা আলোচনা তৈরি করেছি , যেহেতু এটি বেশ কয়েকটি বাইট সংরক্ষণ করে
বিরজোলাক্সিউ

1
@ ডাউনভোটার, দয়া করে কোনও মন্তব্য করার বিনয় করুন।
ছাগল

@ শেগি আমি মেটা আলোচনা শুরু হওয়ার সাথে সাথে একই কারণে ধরে নেব would

ডাউনভোটার, আপনি যদি কোনও প্রতিষ্ঠিত sensকমত্যের সাথে একমত নন (যেমন @ রোজেমের পরামর্শ অনুসারে), দয়া করে সেই sensকমত্যের সাথে মেনে চলার সমাধানের চেয়ে প্রাসঙ্গিক মেটা পোস্টকে কমিয়ে দিন।
শেগি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.