Этот вопрос вдохновлен тем фактом, что я люблю видеть вопросы с равным количеством голосов и количеством ответов ...
Итак, вот простая задача stack-exchange-api для вас:
Вызов:
Для данного codegolf.stackexchange
идентификатора вопроса выведите соотношение между количеством голосов в вопросе и количеством ответов (например, votes/answers
).
Особенности:
Вы можете получить доступ к Интернету, но вы можете получить доступ только к
stackexchange.com
его различным поддоменам. Вы не можете использовать сокращения URL.Вы можете принимать и выводить данные в любом стандартном формате.
Вы должны вывести отношение в виде десятичного числа в базе 10, по крайней мере с 4 точными цифрами после десятичного числа (нули могут быть усечены).
Если вопрос остается без ответа, ваша программа может вызвать неопределенное поведение.
Вы должны использовать
score
вопрос в качестве подсчета голосов, см. Здесь .
Это код-гольф : наименьшее количество байт на каждом языке выигрывает для этого языка, наименьшее количество байт в общем выигрывает.
Вот пример программы на 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"])
источник
Ответы:
JavaScript (ES6),
103102 байтаНеобходимо запустить с корневого уровня
api.stackexchange.com
. ВозвращаетPromise
объект, содержащий результат.Если разрешено запускать его по определенному пути, тогда это становится
9290 байтами.Попытайся
Добавлен полный URL, чтобы он работал здесь.
источник
i=>(j=i.items[0])
на,({items:[j]})=>j
чтобы сохранить байт.Стратос , 40 байт
-4 байта благодаря Shaggy
Попытайся!
Stratos специализируется на вопросах stack-exchange-api .
Объяснение:
Код распаковывается к следующему:
Начиная с первой строки, Стратос оценивает диады справа налево.
f"api.stackexchange.com/questions/%?site=codegolf"r"items"@0
означает "оценить диаду@
с левым аргументомf"api.stackexchange.com/questions/%?site=codegolf"r"items"
и правым аргументом0
.@
получает n-й элемент массива JSON.Чтобы оценить
f"api.stackexchange.com/questions/%?site=codegolf"r"items"
, мы затем оценим диадуr
с левым аргументомf"api.stackexchange.com/questions/%?site=codegolf"
и правым аргументом"items"
.r
получает массив JSON с указанным именем.Далее нам нужно будет оценить
f"api.stackexchange.com/questions/%?site=codegolf"
. Сначала%
заменяется на вход.f
означает «получить содержимое этого URL».Теперь мы можем перейти ко второй строке. Новая строка означает «добавить то, что мы оценили, в список неявных аргументов»
Далее мы оцениваем
s
(получаем строку в объекте JSON с определенным именем) с помощью{
и"answer_count"
.{
берет элемент из стека неявных аргументов, возвращает его и добавляет обратно в стек.Затем мы добавляем вывод этого в стек неявных аргументов.
Для оценки
⁰s"score"/
мы применяем диаду/
(деление)⁰s"score"
и элемент из неявного стека аргументов.Для оценки
⁰s"score"
мы получаем строку"score"
из объекта JSON из 0-го элемента в стеке имплицитных аргументов.Теперь вывод
/
распечатывается и программа завершается.источник
2.2/
).R + jsonlite , 111 байт
R-скриптовая ссылка
jsonlite - это хорошая библиотека преобразования JSON <-> R, которая работает довольно хорошо. Я не собирался играть в гольф парсером JSON для R ...
источник
http
протокол. Кроме того, я предполагаю,142729
что там не должно быть жестко закодировано?T-SQL,
6454 байтаРедко SQL может побить (большинство) других языков! Вместо URL-адреса API я обратился непосредственно к Обозревателю данных Stack Exchange :
Это
##i##
не стандартный SQL, это формат Stack Exchange для запроса ввода.Обратите внимание, что источник проводника данных обновляется только ночью, поэтому значения не являются текущими.
Будет выбрасывать ошибку деления на ноль на вопросы без ответов.
Изменить : 10 байт путем умножения на 1,0 вместо явного
CONVERT
дляFLOAT
.источник
PowerShell , 130 байт
Выполняет
I
nvoke-W
ЕВАR
Equest против URL, получает.content
их, делаетConvertFrom-Json
это содержание, и получает.items
этот объект JSON. Сохраняет это$a
и вытаскивает.score
как числитель. Знаменатель это.answer_count
. Это значение остается в конвейере, а вывод неявным.Если вопрос остается без ответа, это должно привести к ошибке «Делить на ноль».
источник
Japt ,
8382 байтаХотелось попробовать, чтобы посмотреть, как это получится, потому что Джапт не может этого сделать. По сути, все это делает
eval
сжатую версию моего решения JS . Поскольку Japt - это JS, мы можем потребовать, чтобы он был запущен с корневого уровняapi.stackexchange.com
и также возвращалPromise
объект, содержащий результат.//api.stackexchange.com/
в URL-адреса и,console.log
таким образом, вы можете увидеть, как это работаетисточник
Mathematica, 124 байта
У Mathematica есть тип данных, который называется,
Rule
и это выводит меня из себя. :Писточник
Python 3 + запросы, 149 байт
-1 байт благодаря мистеру Xcoder.
источник
http
достаточно.PHP, 167 байт
Турбо-быстрый треск на этом. Сохранить как файл и выполнить в терминале так:
Может быть, способ уменьшить это.
источник