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>
しおり
そして、これはカスタマイズ可能なブックマークレットとして、まだ答えていないランダムな質問をロードします。使用するには、ブラウザのツールバーに新しいブックマークを追加し、完全なコードをURLフィールドにドロップします。
上記のソリューションとは異なり、これはサイト上のすべての質問で機能するため、実行に時間がかかる場合があります(サイトおよびタグによって異なります)。また、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)))()