Esta pergunta é inspirada no fato de eu adorar ver perguntas com igual número de votos e respostas ...
Então, aqui está um desafio simples de stack-exchange-api para todos vocês:
Desafio:
Dado o codegolf.stackexchange
ID da pergunta, mostre a razão entre os votos da pergunta e o número de respostas (por exemplo votes/answers
).
Específicos:
Você pode acessar a Internet, mas pode acessar apenas
stackexchange.com
e seus vários subdomínios. Você não pode usar encurtadores de URL.Você pode receber e dar saída em qualquer formato padrão.
Você deve exibir a proporção como um número decimal na base 10, com pelo menos 4 dígitos {precisos} após o decimal (zeros podem ser truncados).
Se a pergunta não for respondida, seu programa poderá produzir um comportamento indefinido.
Você deve usar o
score
da pergunta como contagem de votos, veja aqui .
Isso é código-golfe , menos bytes em cada idioma ganha para esse idioma, menos bytes em geral ganha em geral.
Aqui está um exemplo de programa em Python 3 + requests
:
import requests
import json
id = input("id> ")
url = "https://api.stackexchange.com/2.2/questions/" + id + "?site=codegolf"
content = requests.get(url).text
question = json.loads(content)["items"][0]
print(float(question["score"]) / question["answer_count"])
fonte
Respostas:
JavaScript (ES6),
103102 bytesPrecisa ser executado a partir do nível raiz de
api.stackexchange.com
. Retorna umPromise
objeto que contém o resultado.Se a permissão de execução a partir de um caminho específico for permitida , isso se tornará
9290 bytes.Tente
URL completo adicionado para permitir que ele funcione aqui.
fonte
i=>(j=i.items[0])
por({items:[j]})=>j
para salvar um byte.Stratos , 40 bytes
-4 bytes graças a Shaggy
Tente!
Stratos é especialista em perguntas sobre stack-exchange-api .
Explicação:
O código descompacta para o seguinte:
A partir da primeira linha, Stratos avalia as díades da direita para a esquerda.
f"api.stackexchange.com/questions/%?site=codegolf"r"items"@0
significa "avaliar a díade@
com o argumento da esquerdaf"api.stackexchange.com/questions/%?site=codegolf"r"items"
e o argumento da direita0
.@
obtém o enésimo elemento de uma matriz JSON.Para avaliar
f"api.stackexchange.com/questions/%?site=codegolf"r"items"
, avaliaremos a díader
com o argumento da esquerdaf"api.stackexchange.com/questions/%?site=codegolf"
e o argumento da direita"items"
.r
obtém a matriz JSON com o nome especificado.Em seguida, precisaremos avaliar
f"api.stackexchange.com/questions/%?site=codegolf"
. Primeiro,%
é substituído pela entrada.f
significa "obter o conteúdo deste URL".Agora, podemos passar para a segunda linha. A nova linha significa "adicionar o que avaliamos à lista de argumentos implícitos"
Em seguida, avaliamos
s
(obter string no objeto JSON com um determinado nome) com{
e"answer_count"
.{
pega um elemento da pilha de argumentos implícitos, retorna e os adiciona de volta à pilha.Em seguida, adicionamos a saída disso à pilha de argumentos implícitos.
Para avaliar
⁰s"score"/
, estamos aplicando a díade/
(divisão)⁰s"score"
e um elemento da pilha de argumentos implícitos.Para avaliar
⁰s"score"
, estamos obtendo a string"score"
do objeto JSON do 0º elemento na pilha de argumentos implícitos.Agora, a saída de
/
é impressa e o programa termina.fonte
2.2/
).R + jsonlite , 111 bytes
Link R-violino
O jsonlite é uma boa biblioteca de conversão JSON <-> R que funciona muito bem. Eu não estava disposto a jogar um analisador JSON para R ...
fonte
http
protocolo Além disso, acho142729
que não deve ser codificado lá?T-SQL,
6454 bytesÉ raro o SQL vencer (a maioria) de outros idiomas! Em vez do URL da API, fui diretamente ao Stack Exchange Data Explorer :
O
##i##
SQL não é padrão, esse é o formato do Stack Exchange para solicitar entrada.Observe que a fonte do explorador de dados é atualizada apenas todas as noites, portanto, os valores não são atuais.
Irá gerar um erro de divisão por zero em perguntas sem respostas.
Editar : salvou 10 bytes multiplicando por 1,0 em vez de um explícito
CONVERT
paraFLOAT
.fonte
PowerShell , 130 bytes
Executa um
I
nvoke-W
ebR
equest contra a URL, obtém o.content
mesmo, fazConvertFrom-Json
parte desse conteúdo e obtém o.items
objeto JSON. Armazena isso$a
e extrai o.score
como numerador. O denominador é o.answer_count
. Esse valor é deixado no pipeline e a saída é implícita.Se a pergunta não for respondida, isso deve gerar um erro "Dividir por zero".
fonte
Japt ,
8382 bytesQueria tentar dar uma olhada para ver como isso funcionaria, já que Japt não pode realizá-lo nativamente. Essencialmente, tudo o que isso está fazendo é
eval
uma versão compactada da minha solução JS . Como Japt é JS, podemos exigir que isso seja executado a partir do nível raizapi.stackexchange.com
e também retornar umPromise
objeto contendo o resultado.//api.stackexchange.com/
no URL econsole.log
para que você possa realmente vê-lo funcionandofonte
Mathematica, 124 bytes
O Mathematica tem um tipo de dados chamado
Rule
e me confunde muito. : Pfonte
Solicitações Python 3 +, 149 bytes
-1 byte graças ao Sr. Xcoder.
fonte
http
é suficiente.PHP, 167 bytes
Rachadura turbo-rápida nisso. Salve como um arquivo e execute no terminal da seguinte maneira:
Pode ser uma maneira de reduzir isso.
fonte