PPCG的未解答问题


9

这个亲爱的StackExchange网站面临许多挑战,并获得了许多不错的答案。但是,从未解决的挑战又如何呢?

任务

编写一个程序或函数,该程序或函数将打印来自PPCG的未回答的伪随机开放答案(例如,答案完全为零的问题)。所有可能的挑战都应以相同的概率产生。

输入项

  • 没有输入。

输出量

  • 只能是标题,标签和链接,并用换行符分隔。
    • 标题必须与挑战中的标题完全一样。
    • 标签没有严格的输出格式,但必须包含所有标签。
    • 该链接可以包含question-name问题ID,也可以不包含问题ID之后的链接,并且必须引起挑战。
  • 可能会或可能不会翻译为人类可读的格式。
    • &&
  • 允许前导和尾随空格。

例子

Encode a steganographic encoder into a package
code-challenge,unicode,steganography
/codegolf/65159/encode-a-steganographic-encoder-into-a-package

Simple predictive keyboard CG
code-golf
/codegolf/76196/simple-predictive-keyboard-cg

计分

因为这是 ,最短答案(以字节为单位)获胜。


8
我真的已经厌倦了stack-exchange-api挑战。
Rɪᴋᴇʀ

3
@Riker Uhm ...感谢您的反馈?我真的不知道您为什么会因此而拒绝投票,但是我想您会拥有更多权力。
完全人类

6
我没有为此投票。我投反对票是因为我认为这个问题很无聊。此外,封闭式问题是否需要具有相同的输出概率?
Rɪᴋᴇʀ

1
尽管我不像@Riker那样强烈,但最近似乎确实存在许多与API相关的挑战;如此之多,以至于我设法阻止自己使用API​​约21个小时
毛茸茸的

4
有趣的是,这个挑战将在测试期间出现,但是一旦我回答了,它将不再出现在测试中。
HyperNeutrino

Answers:


7

的JavaScript + HTML,271个 250 232字节

显然,您可以将Date用作伪随机数。我从Shaggy的答案中偷了这个。

(仅使用约4个配额)

q=[]
g=f=>fetch('//api.stackexchange.com/questions/unanswered?site=codegolf&page='+f).then(r=>r.json().then(j=>(q=[...q,...j.items])^j.has_more?g(f+1):document.write(`<pre>${(q=q[new Date%q.length]).title}
${q.tags}
`+q.link)))
g(1)

它创建一个数组q,然后调用g(1),以获取结果的第一页并将其添加到q。然后,如果请求说has_more,则它调用g(f+1),以获取下一页,直到到达末尾并写到HTML文档中(这将自动使响应转义)

如果我们不关心所有未解决的问题,则仅关注最近的30个问题(仅使用您配额中的1个):

JavaScript的HTML +,213个 196 179字节

fetch`//api.stackexchange.com/questions/unanswered?site=codegolf`.then(r=>r.json().then(j=>document.write(`<pre>${(j=j.items[new Date%j.items.length]).title}
${j.tags}
`+j.link)))


抱歉,@ Artyer,我太专注于自己的回答了,我从来没有发现你在几分钟前就把我打败了。如果您觉得答案与您的答案相似,我很乐意删除答案。
毛茸茸的

@Shaggy没关系。在您编写答案的同时,我还写了第二个答案,所以很高兴他们碰到了相似的单词。
Artyer

您可以通过硬编码需要获取的页面数来节省一些麻烦。相反的j.has_more?g(f+1),尝试++f<5?g(f)
长毛

您也可以替换q=q.concat(j.items)q=[...q,...j.items]。看起来Tags: 是可选的,因此您也可以删除它。而且join q.tags,在连接到字符串时,它将被强制为字符串。最后,使用模板文字作为最终字词也可以节省一些字节。
毛茸茸的

@Shaggy不幸的是,我已经达到了配额。但是它会在425秒内重置。
Artyer

6

蟒蛇+请求+ JSON +随机+ HTML,249个 239字节

import requests as r,json,random as R,html
j=R.choice(json.loads(r.get('http://api.stackexchange.com/questions/no-answers?site=codegolf').text)['items'])
print('\n'.join([html.unescape(j['title']),'Tags: '+', '.join(j['tags']),j['link']]))

结果比我想要的更长。

@totallyhuman通过使用R.choice而不是R.shuffle第一个元素来获得-10个字节。


您可以使用保存几个字节random.shuffle吗?
完全人类

...等等,甚至更好random.choice()
完全人类

1
@totallyhuman更改输入名称实际上对字节数没有影响:P但是,谢谢.choice()
HyperNeutrino

您不需要json库,请r.get(url).json()改用
ovs

这没有说明has_more。它只能从前30个中随机选择
。– Artyer

0

Bash 255232字节

a="api.stackexchange.com/questions/";b="?site=codegolf";c=$(w3m $a"unanswered"$b"&filter=total"|tr -cd 0-9);w3m $a"no-answers"$b"&pagesize=1&page="$((RANDOM%c))|jq -r ".items[0]|.title,(.tags|join(\", \")),.link"|recode html..utf-8

看起来错误的结果返回的总数为无答案/未答案。总体思路-获得总计,而不是获得包含一项的随机页面。

Bash 174153字节

w3m api.stackexchange.com/questions/no-answers?site=codegolf|jq -r ".items[$RANDOM%(.items|length)]|.title,(.tags|join(\", \")),.link"|recode html..utf-8

它从最近的30个问题中选择一个随机问题,而不是从所有问题中选择。从命令行工作。需要curl w3m,jq和重新编码。

结果:

Tips for golfing in Charcoal
code-golf, tips
/codegolf/117269/tips-for-golfing-in-charcoal

我很确定您需要从所有这些中选择。但是无论如何欢迎来到PPCG!
NoOneIsHere
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.