我会被丹尼斯推翻吗?


15

根据传说几乎每个人都被丹尼斯推倒了。如果没有,他们会的。

现在我很好奇我是否是“几乎所有人”之一。

系统会以的格式为您提供答案的链接/codegolf/[QUESTION ID]/[QUESTION NAME]/#[ANSWER ID]

找到代码的长度,我们将其假定为链接中答案第一行的最后一个数字(明智的降价方式)。

然后,搜索Dennis的答案,然后执行相同的操作。

现在比较输入的答案和Dennis的答案代码长度,如果超出长度(表示Dennis的一个或多个答案比输入答案的答案短),则输出真实值,如果不是,则输出虚假值。

如果在与该答案相同的问题上没有属于丹尼斯的答案,则输出虚假值。

例子

  • 连结true
  • 链接:(false至少现在,告诉我什么时候改变)

规则

  • 您可以使用任何形式的真实/虚假值。
  • 您得到的答案的问题将永远是
  • 该问题可能没有丹尼斯的答案,但是输入的答案永远不会属于丹尼斯。

  • 您可能会认为答案的第一行总是有一个数字。


3
我们是否可以假设丹尼斯始终会回答给定的问题,而给定的答案将不是丹尼斯的回答?
Skidsdev

@Mayube不,是的。
马修·罗

我们是否需要处理分页,或者如果有多个答案页面,我们是否可以假设两个答案都在同一页面上?
毛茸茸的

@蓬松的前。
马修·鲁

@SIGSEGV如果丹尼斯没有答案,由于丹尼斯没有超出答案,我们会输出假吗?
Skidsdev

Answers:


1

Python的3.6 + 要求 + BS4 - 363个 358字节

import bs4,re,requests
u,n=input().split("/#");i=1;d=y=float("inf")
while i:
 A=bs4.BeautifulSoup(requests.get(u+f"?page={i}").text,"html.parser")(class_="answer")
 for a in A:
  c=int(re.findall("\d+",(a("h1")+a("h2")+a("p"))[0].text)[-1])
  if "Dennis"in a(class_="user-details")[-1].text:d=min(c,d)
  if a["data-answerid"]==n:y=c
 i=A and i+1;
print(d<y)

打印TrueFalse

注意:由于此答案产生的HTML无效,当前在第二个链接上不起作用(emstrong标记在第二行的末尾以错误的顺序终止,并导致解析器丢失用户名块)。请尝试在此链接上尝试。

使用API - 401个 380字节

import requests,re
q,A=re.findall("\d+",input());i=1;d=y=float("inf")
while i:
 r=requests.get(f"https://api.stackexchange.com/2.2/questions/{q}/answers?site=codegolf&filter=withbody&page={i}").json();i=r["has_more"]and i+1
 for a in r["items"]:
  c=int(re.search("(\d+)\D+$",a["body"]).group(1))
  if a["owner"]["user_id"]==12012:d=min(d,c)
  if a["answer_id"]==A:y=c
print(d<y)

请注意,这在第二个链接上也失败了,但是因为一个答案开始于This may be foul play.而不是标题...


考虑使用Stack Exchange API代替通过JSON解析器获取答案数据,只需确保filter=withbodyGET请求中包含该内容即可获取答案主体以获取字节数
Value Ink

对于API版本,您使用了a两次(一次设置答案ID,另一次在迭代时设置r["items"],这会导致错误的行为。此外,您无需设置pagesize(默认设置为30)。c=int(re.search(r'(\d+) bytes').group(1))应该为您提供更精确的字节计数检索,并且更短,并且如果仍然失败,(\d+)\s*bytes则可以完成窍门,但是要更长一些,最后,i=r["has_more"]and i+1比您的三元条件还短
Ink价值墨水

实际上,请忽略正则表达式匹配。我忘记考虑在函数调用中添加答案主体的原因,因此该部分更长。但是,其他建议仍然有效。
价值墨水

@ValueInk谢谢,现在缩短一点。像我们看起来需要一个高尔夫语言只是为了API,它的调用是SOOO长...
matsjoyce

也许。但说实话,还有一个事实,那就是您有一个不错的HTML解析器,以及默认情况下为您提供了问题URL的事实。如果输入是两个数字,那么获取代码高尔夫问题页面的开销也很大。
价值墨水

1

红宝石,314 315 308 + 20 = 334 335 328字节

使用标志-n -rjson -ropen-uri。修复了一个小错误后+1个字节。

通过发现open-uriRuby默认库获得-7个字节。

~/(\d+)\D+(\d+)/
u="http://api.stackexchange.com/2.2/questions/#$1/answers?site=codegolf&filter=withbody&page=%s"
n=eval$2
a="answer_id"
j=1
o=[]
(o+=r=JSON.parse(open(u%j).read)["items"]
j=r!=[]&&j+1)while j
p o.select{|e|e["owner"]["user_id"]==12012||e[a]==n}.min_by{|e|e["body"][/\d+\s*bytes/].to_i}[a]!=n
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.