的JavaScript(ES6),333个 329 327 323 283字节
需要从api.stackexchange.com
域(相关meta)中运行。返回一个Promise
包含URL(相关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
尝试一下
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的查询次数也可能会很昂贵,因为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)))()