Escreva um programa / função que retorne a contagem de votos de sua própria resposta do Stack Exchange no momento de sua execução.
- Seu programa / função pode acessar esta página ( codegolf.stackexchange.com/questions/82609 ) fora da Internet, no entanto:
- Seu programa / função pode não aceitar nenhuma entrada do usuário e
- O uso de encurtadores de URL não é permitido
- Seu programa / função pode usar apenas sua própria fonte como um ponto de referência para sua contagem de votos (por exemplo: nenhuma sequência de texto de referência na sua resposta contida, mas não na sua própria fonte)
- Seu programa / função deve gerar sua própria contagem de votos e apenas sua própria contagem de votos (por exemplo: não retornar todas as contagens de votos nesta página)
Este é o código-golfe, o código mais curto vence.
code-golf
quine
internet
stack-exchange-api
Dendrobium
fonte
fonte
perl -e'($_)=`curl -s http://api.stackexchange.com/2.2/posts/123?site=codegolf`;/score":(\d+)/&&print$1'
parece que deve funcionar, mas não. Mas talvez alguém possa usar isso.using its own source
bit para impedir que os usuários configurem a página para facilitar a localização sem contribuir para a contagem de bytes, caso a resposta não use o método de identificação de postagem.Respostas:
jQuery + JavaScript, 85 bytes
História
data
vez ded
.Uso recomendado
Bônus!!
Quem não gosta de um bônus?
Digite o ID no bônus e ele informará a pontuação.
Ainda mais bônus !! Execute esse trecho para executar automaticamente o programa, fazer o upvote e executar novamente! (Requer representante> 15, autenticação). Se não funcionar, por favor me diga.fonte
posts
em vez deanswers
e emhttp
vez dehttps
salva três bytes (ou talvez você possa omitirhttp:
completamente?). (Não testado.)http://
e vai redirecionamento 301 parahttps://
Melhor ainda, basta remover o http completamente//api.stackexchange.com...
$.get
vez de$.getJSON
. O tipo de conteúdo da API éapplication/json
e o jQuery tratará automaticamente a resposta como JSON.JavaScript ES6, 107 bytes
Programadores reais não usam
XMLHttpRequest
. Programadores reais usam a API de busca .fonte
fetch
não está definidoBash,
80797569 bytesPara fins de pontuação,
\t
deve ser substituído por um caractere TAB.Isso requer
w3m
, que deve estar disponível por padrão na maioria das distribuições Linux.Graças a @NoOneIsHere por -2 bytes!
Como funciona
w3m
é um navegador da web de linha de comando. Ele consulta o URL e (normalmente) exibe seu conteúdo em um formato legível. Aqui, apenas (ab) a usamos para evitar a chamadazcat
quecurl
exigiria, pois o SE atende à resposta da API compactada com gzip.tr ,: \^I
substitui todas as vírgulas e dois pontos por tabulações, que sãocut
o delimitador de campo padrão.Finalmente,
cut -f20
remove tudo, exceto o vigésimo campo, que é a contagem de votos.fonte
--compressed
, que é ainda mais longo quezcat
.JavaScript ES6,
175165160 160145 bytesSalva muitos bytes graças ao Optimizer e ao Dendrobium! São todos múltiplos de cinco!
Usando javascript simples e antigo. Quem precisa dessas novas bibliotecas? Programadores reais usam
XMLHttpRequest()
Teste
fonte
prompt
?"g"
não funciona como uma opção para mim.with(new XMLHttpRequest)(open("get","//api.stackexchange.com/2.2/posts/82614?site=codegolf"),onload=_=>alert(response.items[0].score),send(responseType="json"))
para -5 byteswith
TypeError: response.split(...)[12] is undefined",
bash + jq , 69 bytes
Eu usei
curl
ezcat
antes;w3m
é inspirado na resposta de Dennis (surpreendentemente semelhante). Acontece que /jq
e tem o mesmo custo de bytes!tr
cut
fonte
0,5, 63 bytes convexos
Isso recupera a pontuação da página de pesquisa em vez da API, especificamente da consulta https://codegolf.stackexchange.com/search?q=inquestion:82714 . Felizmente,
inquestion
também funciona para respostas.Verificação
Como funciona
fonte
05AB1E ,
898781 bytesObrigado Python ...
Usa a codificação CP-1252 .
fonte
MATLAB, 103 bytes
fonte
JavaScript (Node.js + Unirest ), 123 bytes
Eu gosto desta biblioteca, porque analisa automaticamente o JSON.
fonte
Julia,
128107 bytesEsta é uma função que não recebe nenhuma entrada e retorna a pontuação desta postagem como uma string. Requer o
Requests
pacote esteja instalado.Como funciona:
get
faz uma solicitação GET para a API SEreadall
lê os bytes brutos na resposta e retorna uma stringsplit
divide a corda em dois pontos e vírgulasEconomizou 21 bytes graças a Dennis!
fonte
JavaScript (Node.js), 166 bytes
-1 byte porque @ CᴏɴᴏʀO'Bʀɪᴇɴ me ensinou a contar;)
-4 bytes graças a @NoOneIsHere
Isso é um pouco embaraçoso. Dang você SE por gzipping sua API! / s
Quaisquer melhorias são muito bem-vindas.
fonte
PHP, 137 bytes
Bem direto. A descompactação ocupa muitos bytes:
Ungolfed
fonte
PHP, 121 bytes
Sem API.
Obtém a postagem inteira e extrai a contagem de votos com regex. (não analise HTML com regex!)
Ungolfed:
fonte
http:
?05AB1E , 45 bytes
Não há TIO para todo o programa, porque o
.w
acesso interno à Internet não funciona no TIO.Explicação:
Começamos criando o URL e acessando-o:
Experimente online (sem o
.w
).Depois disso, extraímos a pontuação do JSON:
Experimente online.
Uma alternativa igual a 10 bytes para esta segunda parte pode ser:
Experimente online.
Veja esta minha dica do 05AB1E (seções Como usar o dicionário? E Como compactar números inteiros grandes? ) Para entender por que
•2íЕ
é190437
,’¸¸.‚‹º.ŒŒ/„¤/ÿ?€¼=ƒËŠˆ’
é"api.stackexchange.com/posts/ÿ?site=codegolf"
,'ŒÂ
é"score"
e„ŒÂ‚¡
é"score after"
.PS / EDIT: Percebo que, usando o
þ
Presumo, nunca receberei uma pontuação negativa. ;)fonte