Escreva um software que imprima no stdout o número de respostas e o número de comentários (visíveis e recolhidos das perguntas e respostas) desta pergunta / página.
Seu script deve ser executado com esta página fechada quando for iniciada.
Exemplo de saída esperada:
A12C40
Onde A significa Respostas e C, Comentários.
Respostas:
Perl,
91 9692 caracteresAlgumas coisas apenas para quebrar soluções de outras ha ha ha :-P
mostrar mais 93 comentários
href
nt = "99" (ha ha crash @Fez Vrasta)
a, mostra 99 mostra 99 ha ha
href href href ha ha haha :-D
caramba, acabei de quebrar minha própria resposta! Descobri que um dos truques acima, que eu pensava não fazer nada, começará a funcionar depois que essa resposta não for editada por algum tempo! Portanto, suas soluções funcionarão apenas por algum tempo. Foi por isso que você viu mais uma resposta em suas soluções. É uma bomba cronometrada! Minha resposta já está propensa a isso :-) Aaah, encontrei uma maneira de iniciá-lo AGORA ...
fonte
perl -E
. Excluindo meu comentário. Também é possível excluir sua referência à minha resposta, como você não está corretagem-lo mais :)XQuery,
169,160, 165Mais legível (com espaços):
O BaseX foi usado como processador XQuery.
fonte
doc()
função) se esta página fosse XML válida ...$d//*[@class="comments-link"]/b
é para (na tag <b> o número de comentários escondidos é mostrado)Python 3, 180
Estou assumindo que esta pergunta não terá várias páginas de respostas.
fonte
A13C20
. Inclua um colchete angular no regex e acho que deve ser bom, pois eles escaparam.,sep=''
BASH + AWK
163,144,138,111,110,114,131,132, 105O que é igual a isso, mas sem redirecionar para um arquivo:
Saída atual
Explicação
ondulaçãoTransfira um URL.
-s
emcurl
é para o silêncio. E-L
seguir redirecionamentos.Para analisar o arquivo. Como algumas respostas tinham algum código para quebrar outras, a análise foi alterada para que seja analisada desde o início da linha
(^
) para garantir que não seja quebrada.-F'[<>]'
definir separadores de campo como<
ou>
. Dessa forma, o texto pode ser analisado corretamente para o "show XXX more comments"./^[\t]*>show <b>/{c+=$4}
em linhas que contêm "espaços ....> show", obter o quarto campo (com base em<
,>
separadores) e adicionar o valor para contrariar os comentários./^[ ]*<tr.*s="comm/{++c}
em linhas contendo "espaços .../^<td.*rcell">/{++a}
nas linhas que contêm "", aumente o contador de respostas.END{print "A"a"C"c}
imprima a saída.fonte
m
ef
no seu código:echo "A$(grep -c 'rcell">' m)C$(grep -c 'mment">' f)"
deveria serecho "A$(grep -c 'rcell">' f)C$(grep -c 'mment">' f)"
, não?PHP que realmente funciona (302 caracteres)
Ao contrário de todas as outras respostas até agora, isso retorna a resposta correta mesmo quando a pergunta se espalha em mais de uma página.
fonte
(count($i)-1)
corrige a contagem para não incluir a pergunta.[]
vez dearray()
inicializar$i
tiver mais de 100 itens. (Minha própria versão do mesmo em ruby não tem essa limitação. Embora seja verdade que ela pode esbarrar nos limites da API. ;-))R, 326
Com recuo e explicações:
Testado com esta página , fornece o número certo de comentários (incluindo ocultos) na primeira página e o número certo de respostas, ou seja
A23C63
.E aqui está uma solução com 482 caracteres que obtém o número correto de comentários se a pergunta acabar se espalhando em várias páginas:
Recuado:
Tentou em esta questão e emitido:
A125C499
.fonte
HTML, 37
Desculpe, o flagrante abuso de regras segue!
Explicação
q0x.eu/1
redireciona para: http: //api.stackexchange.com/2.1/questions/20277/comments? site = codegolf & callback = ...onde o retorno de chamada é:
q0x.eu/2
redireciona para http: //api.stackexchange.com/2.1/questions/20277/answers? site = codegolf & callback = ...e
q0x.eu/3?n=...
redireciona para http: //api.stackexchange.com/2.1/answers/.../comments? site = codegolf & callback = ...Eu estava originalmente tentando fazê-lo legitimamente e ainda podia tentar, mas isso foi divertido!
fonte
q0x.eu/1
então? PS: soluções legítimas não pode bater Perl de qualquer maneira ;-) (desafio flagrante)curl q0x.eu/1
ou algo assim, mas era muito preguiçoso ...Ruby 175 (conta entre páginas, usando a API em vez do DOM)
Isso é 242 sem o URL abreviado:
Resposta 291 anterior:
Créditos a Peter Tailor pela idéia de usar a API e a Charles por apontar para uma API melhor.
fonte
Python com stackpy 160
Implementação
Saída
Nota
Ontem, pensei em usar a API stackexchange, mas levei algum tempo para entender como ela funciona. Hoje, vi duas respostas sobre o mesmo tema. Para tornar minha resposta um pouco diferente, pensei em usar uma biblioteca externa.
Perceba também que outras respostas que se baseiam na análise de padrões como
provavelmente quebrará a qualquer momento, portanto, uma resposta mais definitiva é confiar em um método robusto como esse.
fonte
R 239
Depois de postar minha resposta, a saída é:
fonte
F("div","answer")
eF("td","comment-text")
não funciona para mim (Error in F("div", "answer") : (list) object cannot be coerced to type 'double'
). O padrão não deveriaf
ser emfunction(x)length(xmlValue(x))
vez delength
ou algo semelhante?xpathSApply(...,length)
deve retornar um vetor, não uma lista. Não sei por que você obteria uma lista. E não, eu realmente pretendo usarlength
e nãofunction(x)length(xmlValue(x))
: o objetivo é obter um vetor de1
s, um para cada comentário ou resposta.xpathSApply
can pode ter outras funções (comolength
) quexmlValue
outras similares e uma novidade da versão 3.94 do pacote (se eu entendi corretamente o seu changelog). Talvez seja por isso que não funcionou para mim. Sim, eu tive a ideia de que você queria um vetor de 1s, mas com a minha versão do pacote só posso conseguir isso emfunction(...
vez de apenaslength
.Não posso acreditar que ninguém inventou isso até agora! Solução mais direta para usar :-)
jQuery,
116101 caracteres (fora da competição)Talvez isso não esteja de acordo com as regras, guardo-o apenas por diversão - a solução jQuery não pode faltar :) Pelo menos como referência para testar seus scripts !!! ;-)
Tente executar a partir do console do FireBug:
Se você tiver uma conexão lenta, aumente o tempo limite :-) Obrigado a @Fez Vrasta pela ótima idéia de clicar nos links "mostrar mais"!
Algumas outras coisas para quebrar a solução dos outros, class = "comment" e a bomba cronometrada ha ha
fonte
PHP:
184172Explicação:
Pela primeira vez, o PHP vence outras linguagens nos scripts de golfe: ')
Alguma marcação extra neste tópico para evitar "truques" da expressão regular:
mostrar 9999 mais comentários
fonte
Nó, 403
Somente atinge a API uma vez ... provavelmente pode ser reduzido, mas sou novo no Node.
fonte
153151147, consulta C # e CsC # com CsQuery:
Programa completo:
118 C # & CsQuery no LINQPad ou em Roslyn
Se a execução do LINQPad for permitida, então:
Produz:
Um pouco mais divertido.
F # com CsQuery, 143:
fonte
RESPOSTA INDEPENDENTE INVÁLIDA - AQUI APENAS POR DIVERSÃO
Javascript + jQuery - 155
Basta colar no seu console. Supõe que haveria apenas uma página:
fonte