这个问题有多少个答案?


16

编写一个程序或函数,输出该问题具有的整数答案。添加更多答案后,您的解决方案仍然可以使用。

在此页面上时,可以从js控制台运行在浏览器中运行的语言。否则,您可能必须下载此页面。多语言解决方案,例如wget使用该页面解析页面grep是可以的。只需总结命令行和所有使用的源即可。

这是代码高尔夫;以字节为单位的最短答案获胜。

编辑:

让我们最多不考虑此页面的URL的出现,无论是作为输入还是作为源。没有url缩短器,没有数据存储为get参数等。url周围的引号(如果需要)仍然有效。将url作为输入也可以。如果要删除url的某些部分,例如/how-many-answers...,可以,但是可能无济于事。


现在就对此作出裁定可能为时已晚,但是计数是否应包括已删除的答案?
丹尼斯

2
@Dennis我看不到已删除的答案,所以我会说没有人需要担心它们。如果需要,算一下。我看不到它们,因为看不到它们。
菲利普·哈格隆德

函数可以接受url作为输入吗?输入会计入字节数吗?
JungHwan Min

2
@FilipHaglund,我认为从总计数中减去代码中的URL字节数或将其作为输入是最有意义的,因为这种方式使得无法在浏览器中运行的语言无法运行有机会获胜
丹尼尔(Daniel)

1
那(尽管在某些语言中,输入可能需要更多的字节),或者仅允许http://...在源代码中逐字显示网址时减去。
丹尼斯

Answers:


14

Javascript + jQuery,23个字节

_=>+$("h2>span").text()

如果h2>span挑战本身存在,这不会失败吗?
Martin Ender

3
然后将其添加到答案中可能会很好。:)
Martin Ender

1
可以将其设为可运行状态(“运行代码段”)吗?
RudolfJelin '16

13
请注意,这使用的不是纯JavaScript的jQuery(即不应仅将其标记为“ JavaScript”)。至少应该明确声明使用语言之上的库。我并不是在反对使用jQuery,只是应该指出这一点。
Makyen '16

1
@Makyen StackOverflow的网络使用jQuery。问题是:“在此页面上,可以从js控制台运行在浏览器中运行的语言。” jQuery不需要加载,因为已经加载了。也许这就是为什么未指定jQuery的原因。
Ismael Miguel

4

Mathematica,33个字节

Length@Import[#,"Data"][[4,2]]-1&

输入是此页面的URL。


4

Python 2,120个字节,79个没有URL

我不能说Python是为应对这一挑战而设计的。

import urllib
print[l for l in urllib.urlopen("http://codegolf.stackexchange.com/q/96298")if"answerCount"in l][0][83:-9]

不幸的是,内联导入的长度是相同的:(

高尔夫的任何帮助,将不胜感激!

如果可以将URL(高达41个字节,超过我的字节数的1/3)作为输入,则为82个字节:

import urllib
lambda u:[l for l in urllib.urlopen(u)if"answerCount"in l][0][83:-9]

1
尝试使用requests图书馆
2016年

我认为可以省略尾部斜线...?
TheInitializer '16

@TheInitializer,哦,是的,谢谢!
丹尼尔(Daniel)

如果将行更改为import urllibimport urllib as u则可以保存3个字节
sonrad10 '16

@ sonrad10,怎么回事?最终长度是一样的,不是吗?
丹尼尔(Daniel)

3

Javascript,67个字节

alert($(".answers-subheader").children().first().children().html())

这个看起来太长了


3

Javascript(ES5),46 44 40 38 33字节

_=>parseInt($('#answers').text())

多亏Ismael Miguel节省了5个字节

注意:这非常慢,如果您具有PPCG-Design用户脚本,则将无法使用。


与其他Javascript答案没有太大不同。实际上,这只是它的未优化版本。
Ismael Miguel

@IsmaelMiguel 1.它写另一个之前,2.它在其他答案使用的隐藏元素之前使用元素。
仅ASCII的

很公平。但是您可以使用parseInt($('#answers').text()),它将起作用。这样可以节省一些字节。
伊斯梅尔·米格尔

3

CJam,15个字节

lg"2>"/1=A>S/0=

需要此页面的URL作为输入。

怎么运行的

l                e# Read a line (the URL) from STDIN.
 g               e# Fetch the resource the URL points to.
  "2>"/          e# Split the source at occurrences of "2>".
       1=        e# Select the second chunk, i.e., everything between the first
                 e# <h2> and the first </h2>.
         A>      e# Discard the first 10 characters (a linefeed and 9 tabs).
           S/0=  e# Split at spaces and select the first chunk.

1

171字节bash + 3键天猫

lynx -cfg=<(echo PRINTER:Answercount:grep [0-9]*.Answers %s|less:FALSE:999') http://codegolf.stackexchange.com/questions/96298/how-many-answers-does-this-question-have

伯爵伯爵刚刚从5增加到6 ;-)
Roman Czyborra

1
您可以替换http:// ... http://codegolf.stackexchange.com/q/96298
JungHwan Min

我更喜欢零重定向,因为即使171-49 = 122,我仍然无可救药。
Roman Czyborra

1

99字节sh + curl + jq + stackexchange API

curl -s --compressed api.stackexchange.com/questions/96298/answers?site=codegolf|jq .items\|length

使用API​​,我可以避免与页面格式和html相关的问题。不幸的是,我的答案中的60个字节是此特定api查询的最大URL,另外13个字节用于curl来解压缩查询结果,因为stackexchange拒绝通过api提供未压缩的数据。

实际的“逻辑”来自将API卷曲以请求带有此帖子答案的json回复。将其解压缩,然后通过管道传递到json解析器jq中,该解析器提取“ items”数组并输出其长度。

您可能会非常接近让api仅返回答案数,但是从我想出的结果来看,您无法获得那里的100%的信息,而接近它会比通过jq传递更多的字节。

101个字节以返回{“ total”:}:

curl -s --compressed api.stackexchange.com/questions/96298/answers?site=codegolf&filter=!)V)MSZJUgX_

api查询中的filter参数非常强大,但与提供“只是卷曲url”解决方案相去甚远。在这里可能会有一个中间立场,您可以在其中得到较短的响应,然后仅对行数进行计数或提取数字,但是不幸的是,过滤器字符串的长度是固定的,并且所需的jq命令已经更加有效。


凉。请注意,您可以使用URL缩短器并添加-L选项以使curl跟随重定向来节省许多字节;例如curl -sL --compressed bit.ly/2ebw404|jq .total
sergioFC16年


@丹尼斯不知道,谢谢。
sergioFC16年

1

PHP,76(代码)+ 41(URL)= 117字节

preg_match_all('<h2>(.*) answers<span',file_get_contents("http://codegolf.stackexchange.com/q/96298"),$o);
echo $o[0];

1

Java,230 269-41 = 228字节

interface A{static void main(String[]a)throws Exception{System.out.print(new java.util.Scanner(new java.net.URL("http://codegolf.stackexchange.com/q/96298").openStream()).useDelimiter("\\Z").next().replaceAll("\n|\r","").replaceAll("^.+?\\s+(\\d+) Answers.+$","$1"));}}

(仅计算未删除的答案)


0

JavaScript + jQuery(已包含在页面中),20字节

+$('h2>span').text()

该程序旨在在控制台中针对当前页面执行(用打开F12)。它输出答案的数量,不带引号。它适用于Chrome,Firefox,IE11和Edge。它应该可以在其他浏览器中使用,但是我只在列出的浏览器中进行过测试。

与此处的其他JavaScript解决方案不同,它本身就是程序,而不是使用ES6箭头函数符号函数表达式。同样与这些解决方案不同的是,它实际上会在控制台中生成带有答案数量的输出(不带引号)(而不仅仅是产生不输出的函数表达式)。产生输出依赖于每个浏览器控制台中的功能,即在对表达式的值求值后才输出该表达式的值。

这取决于<span>页面上唯一具有父<h2>元素的元素,该父元素是包含答案数量作为其文本内容的元素。经过实验后,似乎是这种情况,并且似乎不可能使用编辑器有意创建<h2>带有<span>子级的an :<span>删除所有显式插入的元素,并且在Stack Exchange上使用的Markdown不会<span>在内创建实际值<h2>。如果有人可以演示可以操纵页面的情况'h2>span'选择器不再唯一的情况,则需要对此进行修改。

如果评估为字符串而不是数字是可接受的,则

JavaScript + jQuery(已包含在页面中),19个字节

$('h2>span').text()

但是,尽管这不等于包括在内"",但在所有经过测试的控制台中,它会产生包含在中的输出""。我阅读了菲利普·哈格隆德(Filip Haglund)对这个问题的评论,认为它排除了这一输出。


0

R,80个字节

答案基于readLines使用正则表达式搜索返回的向量。我猜这可能会被评论/答案中的文字(甚至可能是我自己的文字)破坏。如果是这样,将删除。同样,模式也可以改变,但不确定是否会增加获得错误值的可能性。

x=readLines(scan(,""));regmatches(x,regexpr("(?<=answerCount\">).*?(?=<)",x,,T))
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.