Esta pregunta está inspirada en el hecho de que me encanta ver preguntas con igual voto y conteo ...
Así que aquí hay un simple desafío stack-exchange-api para todos ustedes:
Desafío:
Dada una codegolf.stackexchange
identificación de pregunta, genera la relación entre los votos de la pregunta y el número de respuestas (por ejemplo votes/answers
).
Detalles específicos:
Puede acceder a Internet, pero solo puede acceder
stackexchange.com
y sus diversos subdominios. No puede usar acortadores de URL.Puede tomar entrada y dar salida en cualquier formato estándar.
Debe generar la razón como un número decimal en base 10, con al menos 4 dígitos {precisos} después del decimal (los ceros pueden truncarse).
Si la pregunta no tiene respuesta, su programa puede producir un comportamiento indefinido.
Debe usar la
score
pregunta como conteo de votos, consulte aquí .
Este es el código de golf , menos bytes en cada idioma gana para ese idioma, menos bytes en general gana en general.
Aquí hay un programa de muestra en 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"])
fuente
Respuestas:
JavaScript (ES6),
103102 bytesDebe ejecutarse desde el nivel raíz de
api.stackexchange.com
. Devuelve unPromise
objeto que contiene el resultado.Si se requiere que se ejecute desde una ruta específica, se convierte en
9290 bytes.Intentalo
URL completa agregada para permitir que funcione aquí.
fuente
i=>(j=i.items[0])
con({items:[j]})=>j
para guardar un byte.Stratos , 40 bytes
-4 bytes gracias a Shaggy
¡Intentalo!
Stratos se especializa en preguntas de stack-exchange-api .
Explicación:
El código se descomprime a lo siguiente:
A partir de la primera línea, Stratos evalúa las díadas de derecha a izquierda.
f"api.stackexchange.com/questions/%?site=codegolf"r"items"@0
significa "evaluar la díada@
con el argumento de la izquierda y el argumento def"api.stackexchange.com/questions/%?site=codegolf"r"items"
la derecha0
.@
Obtiene el enésimo elemento de una matriz JSON.Para evaluar
f"api.stackexchange.com/questions/%?site=codegolf"r"items"
, evaluaremos a continuación la díadar
con el argumento de la izquierda y el argumento def"api.stackexchange.com/questions/%?site=codegolf"
la derecha"items"
.r
obtiene la matriz JSON con el nombre especificado.A continuación, tendremos que evaluar
f"api.stackexchange.com/questions/%?site=codegolf"
. Primero,%
se reemplaza con la entrada.f
significa "obtener el contenido de esta URL".Ahora, podemos pasar a la segunda línea. La nueva línea significa "agregar lo que evaluamos a la lista de argumentos implícitos"
A continuación, evaluamos
s
(obtener una cadena en un objeto JSON con un nombre determinado) con{
y"answer_count"
.{
toma un elemento de la pila de argumentos implícitos, lo devuelve y lo agrega nuevamente a la pila.Luego, agregamos el resultado de eso a la pila de argumentos implícitos.
Para evaluar
⁰s"score"/
, estamos aplicando la díada/
(división)⁰s"score"
y un elemento de la pila de argumentos implícitos.Para evaluar
⁰s"score"
, estamos obteniendo la cadena"score"
del objeto JSON del elemento 0 en la pila de argumentos implícitos.Ahora, la salida de
/
se imprime y el programa termina.fuente
2.2/
).R + jsonlite , 111 bytes
Enlace R-Fiddle
jsonlite es una buena biblioteca de conversión JSON <-> R que funciona bastante bien. No iba a jugar un analizador JSON para R ...
fuente
http
protocolo. Además, supongo142729
que no debería estar codificado allí.T-SQL,
6454 bytes¡Es raro que SQL pueda vencer a (la mayoría) de otros idiomas! En lugar de la URL de la API, fui directamente al Explorador de datos de Stack Exchange :
El
##i##
SQL no es estándar, es el formato de Stack Exchange para solicitar la entrada.Tenga en cuenta que la fuente del explorador de datos solo se actualiza todas las noches, por lo que los valores no son actuales.
Lanzará un error dividir por cero en las preguntas sin respuestas.
Editar : guardado 10 bytes multiplicando por 1.0 en lugar de un explícito
CONVERT
aFLOAT
.fuente
PowerShell , 130 bytes
Realiza una
I
búsqueda nvoke-W
ebR
contra la URL, obtiene la.content
misma, realiza unaConvertFrom-Json
de ese contenido y obtiene la.items
de ese objeto JSON. Almacena eso$a
y lo saca.score
como numerador. El denominador es el.answer_count
. Ese valor se deja en la tubería y la salida es implícita.Si la pregunta no tiene respuesta, esto debería arrojar un error "Dividir por cero".
fuente
Japt ,
8382 bytesQuería probar esto para ver cómo funcionaría, ya que Japt no puede lograrlo de forma nativa. Esencialmente, todo lo que está haciendo es
eval
crear una versión comprimida de mi solución JS . Como Japt es JS, entonces podemos exigir que esto se ejecute desde el nivel raíz deapi.stackexchange.com
y también devolver unPromise
objeto que contenga el resultado.//api.stackexchange.com/
en la URL y deconsole.log
modo que realmente pueda verlo funcionandofuente
Mathematica, 124 bytes
Mathematica tiene un tipo de datos llamado
Rule
y me confunde muchísimo. :PAGfuente
Python 3 + solicitudes, 149 bytes
-1 byte gracias al Sr. Xcoder.
fuente
http
suficiente.PHP, 167 bytes
Grieta turbo rápida en esto. Guarde como un archivo y ejecútelo en la terminal así:
Podría ser una forma de reducir esto.
fuente