JavaScript (ES6), 333 329 327 323 283 bayt
Alan adından çalıştırılması gerekiyor api.stackexchange.com( alakalı meta ). PromiseURL içeren bir içerik döndürür ( alakalı meta ).
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
Dene
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
Ve burada, henüz cevaplamadığınız rastgele bir soru yükleyecek özelleştirilebilir bir yer işareti olarak. Kullanmak için, tarayıcınızın araç çubuğuna yeni bir yer işareti eklemeniz ve kodun tamamını URL alanına bırakmanız yeterlidir.
Yukarıdaki çözümden farklı olarak, bu bir sitedeki tüm sorularla çalışır, bu nedenle (siteye ve etiketlere bağlı olarak) çalıştırmak yavaş olabilir ve API için yapması gereken sorgu sayısında da pahalı olabilir. bir seferde sadece 100 soru döndürün.
Özelleştirmek için aşağıdaki değişkenleri değiştirin
k: API anahtarınız - burada bir tane için kaydolabilirsiniz .
s: Soru sormak istediğiniz Stack Exchange sitesi.
i: Bu sitedeki kullanıcı kimliğiniz.
t: Filtrelemek istediğiniz etiketler. Bunun için 4 seçenek var:
"": Boş bir dize; herhangi bir etikete göre filtrelemek istemiyorsanız,
"code-golf;string": Filtrelemek istediğiniz etiketlerin noktalı virgülle ayrılmış bir listesi,
prompt("Tags:"): Filtrelemek istediğiniz etiketleri girmeniz istenir veya,
prompt("Tags:","code-golf;string"): Filtre uygulamak istediğiniz etiketleri varsayılan bir liste sağlayarak girmeniz istenir.
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)))()