উত্তর দিতে আমাকে কিছু প্রশ্ন দিন!


15

ভূমিকা

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

চ্যালেঞ্জ

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

  • প্রশ্নকারীকে অবশ্যই তার ব্যবহারকারী হতে হবে না যার আইডি প্রশ্নের সাথে ইনপুট করা হয়েছিল
  • যার আইডি প্রশ্নের প্রশ্নের সাথে ইনপুট করা হয়েছিল সেই ব্যবহারকারী ইতিমধ্যে প্রশ্নের উত্তর দেওয়া উচিত নয়
  • প্রশ্নটি অবশ্যই উত্তর দেওয়া উচিত নয়: এটি সম্ভবত খুব কঠিন
  • প্রশ্নের অবশ্যই 10 টিরও বেশি উত্তর না থাকা উচিত: এটি সম্ভবত খুব সহজ
  • প্রশ্নটি ট্যাগ করতে হবে

বিধি

ইউআরএল সংক্ষিপ্তকরণগুলি অনুমোদিত নয়।

আপনি স্ট্যাক এক্সচেঞ্জ এপিআই এবং স্ট্যাক এক্সচেঞ্জ ডেটা এক্সপ্লোরার ব্যবহার করতে পারেন।

আপনাকে কেবল কখনও আসল পিপিসিজি ব্যবহারকারীর আইডি দেওয়া হবে।

কোনও উপযুক্ত প্রশ্ন না হওয়ার সম্ভাব্য ইভেন্টে আপনাকে কোনও আউটপুট দিতে হবে না (অপরিজ্ঞাত আচরণটি ঠিক আছে)।

সাইড চ্যালেঞ্জ

যদিও আপনাকে অতিরিক্ত পয়েন্ট দেওয়া হবে না, তবে কেউ যদি ব্যবহারযোগ্য বুকমার্কলেট ডিজাইন করেন যা চালানো হয়, উপরের মানদণ্ড অনুসরণ করে একটি এলোমেলো পিপিসি প্রশ্নে ব্রাউজার উইন্ডোটি খোলায়। ব্যবহারকারীর আইডি হার্ড-কোড করা উচিত প্রোগ্রামে ( কেবলমাত্র বুকমার্কলেটের জন্য )।

চ্যালেঞ্জ

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

উত্তর:


4

পাওয়ারশেল, 261 বাইট

param($i)$q=irm (($u="api.stackexchange.com/questions/")+($s="?tagged=code-golf&site=codegolf"))
do{$t=$q.items|?{$c=$_|% an*;$_.owner.user_id-ne$i-and$c-gt0-and$c-lt10}|random}while((irm($u+$t.question_id+'/answers'+$s)).items.owner.user_id-contains$i)
$t.link

ব্যাখ্যা:

param($i)
$q=irm (($u="api.stackexchange.com/questions/")+($s="?tagged=code-golf&site=codegolf")) #run this query
do{ #until we find a valid question, get a random one that fits the basic specs
    $t=$q.items|?{$c=$_|% an*;$_.owner.user_id-ne$i-and$c-gt0-and$c-lt10}|random
}while( #Get all of the answers, and their owners into an array, check it doens't contain the provided id
(irm($u+$t.question_id+'/answers'+$s)).items.owner.user_id-contains$i
)
$t.link #output the question link

এমন একটি সংস্করণের জন্য 4 বাইট যুক্ত করুন যা এটি ওয়েব ব্রাউজারে খোলে

param($i)$q=irm (($u="api.stackexchange.com/questions/")+($s="?tagged=code-golf&site=codegolf"))
do{$t=$q.items|?{$c=$_|% an*;$_.owner.user_id-ne$i-and$c-gt0-and$c-lt10}|random}while((irm($u+$t.question_id+'/answers'+$s)).items.owner.user_id-contains$i)
saps $t.link

5

জাভাস্ক্রিপ্ট (ES6), 333 329 327 323 283 বাইট

api.stackexchange.comডোমেনের মধ্যে ( প্রাসঙ্গিক মেটা ) থেকে চালানো দরকার । Promiseইউআরএল সমন্বিত একটি ফেরত দেয় ( প্রাসঙ্গিক মেটা ) Return

f=async i=>await(u="/questions/",s="?tagged=code-golf&site=codegolf",q=await(await(await fetch(u+s)).json()).items.filter(x=>x.owner.user_id!=i&x.answer_count<11).sort(_=>.5-Math.random())[0],await(await fetch(u+q.question_id+s)).json()).items.some(x=>x.owner.user_id==i)?f(i):q.link

চেষ্টা করে দেখুন

f=async i=>await(u="//api.stackexchange.com/questions/",s="?tagged=code-golf&site=codegolf",q=await(await(await fetch(u+s)).json()).items.filter(x=>x.owner.user_id!=i&x.answer_count<11).sort(_=>.5-Math.random())[0],await(await fetch(u+q.question_id+s)).json()).items.some(x=>x.owner.user_id==i)?f(i):q.link
k.previousSibling.value=58974 // me
k.onclick=_=>f(+k.previousSibling.value).then(p=>k.nextSibling.innerText=p)
<input type=number><button id=k>Fetch</button><pre>


বুকমার্কলেট

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

উপরের সমাধানটির বিপরীতে, এটি কোনও সাইটের সমস্ত প্রশ্নের সাথে কাজ করে সুতরাং এটি চালানো ধীর হতে পারে (সাইট এবং ট্যাগগুলির উপর নির্ভর করে) এবং এপিআইতে যতগুলি প্রশ্নের প্রয়োজন সেগুলি ব্যয়বহুলও হতে পারে, যেমন এপিআই করতে পারে একবারে কেবল 100 টি প্রশ্ন ফেরত দিন।

কাস্টমাইজ করতে, নিম্নলিখিত ভেরিয়েবলগুলি পরিবর্তন করুন

  • k: আপনার এপিআই কী - আপনি এখানে একটির জন্য নিবন্ধন করতে পারেন ।
  • s: স্ট্যাক এক্সচেঞ্জ সাইটের জন্য আপনি একটি প্রশ্ন দখল করতে চান।
  • i: সেই সাইটে আপনার ব্যবহারকারীর আইডি।
  • t: আপনি যে ট্যাগগুলি দ্বারা ফিল্টার করতে চান। এটির জন্য 4 টি বিকল্প উপলব্ধ:
    1. "": একটি খালি স্ট্রিং; আপনি যদি কোনও ট্যাগ দিয়ে ফিল্টার করতে না চান,
    2. "code-golf;string": আপনি যে ট্যাগগুলি দ্বারা ফিল্টার করতে চান সেগুলির একটি আধা-কোলন পৃথকীকরণ তালিকা,
    3. prompt("Tags:"): আপনি যে ট্যাগগুলি ফিল্টার করতে চান সেগুলি প্রবেশ করার জন্য আপনাকে জিজ্ঞাসা করা হবে, বা,
    4. prompt("Tags:","code-golf;string"): আপনাকে ডিফল্ট তালিকা সরবরাহের সাথে আপনি যে ট্যাগগুলি ফিল্টার করতে চান সেগুলি প্রবেশ করতে অনুরোধ জানানো হবে।
javascript:(f=(

/* See /codegolf//a/122400/58974 for documenation */
k="",
s="codegolf",
i=58974,
t="code-golf",

p=1,q=[],r=1)=>fetch((u="//api.stackexchange.com/questions/")+(d=`?key=${k}&tagged=${t}&site=`+s)+`&page=${p}&pagesize=100`).then(r=>r.json()).then(j=>r&&(q=[...q,...j.items.filter(x=>x.owner.user_id!=i&(a=x.answer_count)&a<11)])^j.has_more?f(i,k,s,t,p+1,q,1):q.sort(_=>.5-Math.random())[0]).then(y=>fetch(u+y.question_id+"/answers"+d).then(r=>r.json()).then(j=>j.items.some(x=>x.owner.user_id==i)?f(i,k,s,t,q,0):window.location=y.link)))()

1
আমার পাওয়ারশেল উত্তরটির উপর ভিত্তি করে এপিআই-র জন্য স্ট্রিংগুলির দুর্দান্ত পুনঃব্যবহার করুন।
কলসডাব্লু

আপনি কোন স্থানে স্থায়ীভাবে নিষিদ্ধ হন? ;)
বিটা ক্ষয় 11

@ বেটাডেকে, যদি এপিআই চ্যালেঞ্জগুলি আবার গতি বাড়ায় তবে আমি খুব শীঘ্রই এটির সন্ধান করতে পারি! : ডি
শেজি

আপনি এপিআই টোকেনগুলি এখান থেকে ব্যবহার করতে পারবেন: আপনার হারের সীমা বাড়ানোর জন্য stackapps.com/q/7384/45852
programmer5000

1
@ বেটাডেচে, আমি এটিকে ব্যবহারযোগ্য স্ক্রিপ্টে প্রসারিত করার লক্ষ্য নিয়েছিলাম কিন্তু সময়সীমা অতিক্রম করেছে; আমি আগামীকাল এটিতে ফিরে আসার চেষ্টা করব।
শেগি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.