JavaScript (ES6), 333 329 327 323 283 ไบต์
จำเป็นต้องเรียกใช้จากภายในapi.stackexchange.com
โดเมน ( เมตาที่เกี่ยวข้อง ) ส่งคืนPromise
URL ที่มี ( เมตาที่เกี่ยวข้อง )
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>
bookmarklet
และที่นี่เป็นเหมือน bookmarklet ที่ปรับแต่งได้ซึ่งจะโหลดคำถามแบบสุ่มที่คุณยังไม่ได้ตอบ หากต้องการใช้งานเพียงเพิ่มบุ๊คมาร์คใหม่ไปยังแถบเครื่องมือของเบราว์เซอร์และวางรหัสเต็มลงในช่อง URL
แตกต่างจากโซลูชันด้านบนการทำงานกับคำถามทั้งหมดในไซต์ดังนั้นจึงอาจทำงานช้า (ขึ้นอยู่กับไซต์และแท็ก) และอาจมีราคาแพงในจำนวนข้อความค้นหาที่ต้องใช้กับ API เนื่องจาก API สามารถ ส่งคืน 100 คำถามพร้อมกัน
ในการปรับแต่งให้เปลี่ยนตัวแปรต่อไปนี้
k
: คีย์ API ของคุณ - คุณสามารถลงทะเบียนสำหรับหนึ่งที่นี่
s
: ไซต์ Stack Exchange ที่คุณต้องการคว้าคำถาม
i
: ID ผู้ใช้ของคุณบนไซต์นั้น
t
: แท็กที่คุณต้องการกรองด้วย มี 4 ตัวเลือกสำหรับสิ่งนี้:
""
: สตริงว่าง หากคุณไม่ต้องการกรองด้วยแท็กใด ๆ
"code-golf;string"
: รายการแท็กที่คั่นด้วยเครื่องหมายโคลอนที่คุณต้องการกรอง
prompt("Tags:")
: คุณจะได้รับแจ้งให้ป้อนแท็กที่คุณต้องการกรองหรือ
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)))()