Quantas respostas esta pergunta tem?


16

Escreva um programa ou uma função que produza o número inteiro de respostas que esta pergunta possui. Sua solução ainda deve funcionar à medida que mais respostas são adicionadas.

Os idiomas executados em um navegador podem ser executados no console js enquanto estão nesta página. Caso contrário, você provavelmente precisará fazer o download desta página. Soluções em vários idiomas, por exemplo, wgeting a página e análise usando grepestá ok. Basta resumir a linha de comando e todas as fontes usadas.

Isso é código de golfe; a resposta mais curta em bytes vence.

EDITAR:

Vamos permitir que no máximo uma ocorrência do URL desta página não conte, como entrada ou na fonte. Nenhum encurtador de URL, nenhum dado armazenado como parâmetros de obtenção etc. As aspas ao redor do URL, se necessário, ainda contam. Tomando o URL como entrada também é bom. Se você deseja remover uma parte do URL, por exemplo /how-many-answers..., pode, mas provavelmente não ajuda.


Provavelmente é tarde demais para se pronunciar sobre isso agora, mas a contagem deve incluir respostas excluídas?
Dennis

2
@ Dennis Não consigo ver as respostas excluídas, por isso diria que ninguém precisa se preocupar com elas. Contá-los, se quiser. Não os contarei, pois não os vejo.
Filip Haglund 15/16

A função pode aceitar o URL como uma entrada? A entrada seria contada no número de bytes?
JungHwan Min 15/10/16

2
@FilipHaglund, acho que faria mais sentido subtrair a contagem de bytes de URL no código da contagem total ou ser considerada como entrada, porque isso torna impossível os idiomas que não são executados no navegador para ter uma chance de ganhar
Daniel

1
Isso (embora em alguns idiomas a entrada possa exigir ainda mais bytes) ou apenas permita subtrair se a URL http://...aparecer literalmente no código-fonte.
Dennis

Respostas:


14

Javascript + jQuery, 23 bytes

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

Isso não poderia falhar se houver um h2>spanno corpo do desafio?
Martin Ender

3
Pode ser bom acrescentar isso à resposta então. :)
Martin Ender

1
Isso pode ser tornado executável ("snippet de código de execução")?
RudolfJelin

13
Observe que isso usa jQuery que não é JavaScript puro (ou seja, não deve ser rotulado como apenas "JavaScript"). O uso de uma biblioteca incluída no idioma deve ser explicitamente declarada. Não estou argumentando contra o uso do jQuery, apenas que deve ser declarado.
Makyen

1
A rede do @Makyen StackOverflow usa jQuery. A pergunta diz "Os idiomas que são executados em um navegador podem ser executados no console js enquanto estão nesta página". O jQuery não precisa ser carregado, pois já estava. Talvez seja por isso que o jQuery não esteja especificado.
Ismael Miguel

4

Mathematica, 33 bytes

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

A entrada é o URL desta página.


4

Python 2, 120 bytes, 79 sem URL

Não posso dizer que o Python foi feito para esse desafio.

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

Infelizmente, a importação embutida tem o mesmo comprimento :(

Qualquer ajuda com o golfe seria muito apreciada!

Se o URL (41 bytes - acima de 1/3 da contagem de bytes) pode ser usado como entrada, são 82 bytes:

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

1
Tente usar a requestsbiblioteca
noɥʇʎԀʎzɐɹƆ

Eu acho que a barra final pode ser omitida ...?
TheInitializer

@TheInitializer, oh sim, obrigado!
Daniel

Se você alterar a linha import urllibpara import urllib as u, poderá salvar 3 bytes #
sonrad10

@ sonrad10, como assim? Isso acaba tendo o mesmo comprimento, não?
Daniel

3

Javascript, 67 bytes

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

Este olhar muito longo


3

Javascript (ES5), 46 44 40 38 33 bytes

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

5 bytes salvos graças a Ismael Miguel

Nota: Isso é bem lento e não funcionará se você tiver o script de usuário PPCG-Design.


Isso não é muito diferente da outra resposta Javascript . De fato, esta é simplesmente uma versão não otimizada.
Ismael Miguel

@IsmaelMiguel 1. Foi escrito antes do outro, e 2. Usa o elemento antes do oculto que a outra resposta usa.
somente ASCII

Justo. Mas você pode usar parseInt($('#answers').text()), o que irá funcionar. Isso economiza alguns bytes.
Ismael Miguel

3

CJam, 15 bytes

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

Espera o URL desta página como entrada.

Como funciona

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 bytes bash + 3 chaves lynx

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

Count O Count acabou de subir de 5 para 6 ;-) #
1159 Roman Czyborra 15/10

1
Você pode substituir http:// ... com #http://codegolf.stackexchange.com/q/96298
JungHwan Min 15/10

Eu preferi o redirecionamento zero, pois ainda estaria irremediavelmente atrasado, mesmo com 171-49 = 122.
Roman Czyborra

1

API sh + curl + jq + stackexchange de 99 bytes

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

Usando a API, pude evitar problemas relacionados à formatação da página e ao html. Infelizmente, 60 bytes da minha resposta são o URL máximo para esta consulta da API em particular e outros 13 bytes para que o curl descompacte o resultado da consulta, porque o stackexchange se recusa a fornecer dados não compactados por meio da API.

A "lógica" real vem do enrolamento da API, para solicitar uma resposta json com as respostas a este post. Isso é descompactado e, em seguida, canalizado para jq, um analisador json, que extrai a matriz "items" e gera seu comprimento.

Você pode ficar impressionantemente perto de ter a API retornando o número de respostas, mas, pelo que pude apresentar, você não conseguiu chegar a 100% do caminho, e chegar mais perto custaria mais bytes do que apenas passar pelo jq.

101 bytes para retornar {"total":}:

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

O parâmetro filter nas consultas da API é muito poderoso, mas não fornece uma solução "apenas enrolar um URL". Pode haver um meio termo aqui, onde você pode obter uma resposta mais curta e apenas contar as linhas ou extrair o número, mas infelizmente as strings de filtro têm um comprimento definido, e o comando jq necessário já era mais eficiente.


Legal. Observe que você pode salvar muitos bytes usando um encurtador de URL e adicionando a opção -L para fazer redirecionamentos de curl follow; por exemplocurl -sL --compressed bit.ly/2ebw404|jq .total
sergioFC 16/10


@ Dennis Não sabia disso, obrigado.
SergioFC 16/10/16

1

PHP, 76 (Código) + 41 (URL) = 117 bytes

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 bytes

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"));}}

(Apenas conta respostas não excluídas)


0

JavaScript + jQuery (já incluído na página), 20 bytes

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

Este é um programa destinado a ser executado no console da página atual (aberta com F12). Ele gera o número de respostas, sem aspas. Funciona no Chrome, Firefox, IE11 e Edge. Ele deve funcionar em outros navegadores, mas eu apenas o testei nos listados.

Ao contrário de outras soluções JavaScript aqui, é um programa por si só, e não uma expressão de função usando a notação de função de seta ES6 . Além disso, diferentemente dessas soluções, na verdade, ela produz saída (sem aspas) no console com o número de respostas (em vez de ser apenas uma expressão de função que não produz saída). A produção de saída depende do recurso no console de cada navegador que o valor de uma expressão é gerado após a expressão ter sido avaliada.

Isso depende apenas <span>da página com um pai que é um <h2>elemento que contém o número de respostas como seu conteúdo de texto. Após a experimentação, esse parece ser o caso e não parece possível criar intencionalmente um <h2>com um <span>filho usando o editor: todos os <span>elementos inseridos explicitamente são removidos e nenhum Markdown , como usado no Stack Exchange, cria um real <span>dentro de um <h2>. Se alguém puder demonstrar um caso em que a página pode ser manipulada para que o 'h2>span'seletor não seja mais exclusivo, será necessário revisar.

Se a avaliação de uma sequência em vez de um número for aceitável, então

JavaScript + jQuery (já incluído na página), 19 bytes

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

No entanto, embora isso não avalie a inclusão "", em todos os consoles testados, ele produz uma saída que é incluída dentro "". Eu li os comentários de Filip Haglund sobre a questão como impedindo esse resultado.


0

R, 80 bytes

A resposta é baseada na pesquisa do vetor retornado readLinesusando expressões regulares. Estou supondo que isso possa ser quebrado por texto em comentários / respostas (possivelmente até o meu). Exclui se sim. Além disso, o padrão também pode ser deletado, mas não tenho certeza se isso aumentaria a probabilidade de obter um valor falso.

x=readLines(scan(,""));regmatches(x,regexpr("(?<=answerCount\">).*?(?=<)",x,,T))
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.