Напишите программу / функцию, которая возвращает счетчик голосов своего собственного ответа на Stack Exchange во время его выполнения.
- Ваша программа / функция может получить доступ к этой странице ( codegolf.stackexchange.com/questions/82609 ) через Интернет, однако:
- Ваша программа / функция может не принимать любой пользовательский ввод и
- Использование сокращателей URL запрещено
- Ваша программа / функция может использовать только свой собственный источник в качестве контрольной точки для своего подсчета голосов (например: нет ссылок на строки текста в своем ответе, но не в своем собственном источнике)
- Ваша программа / функция должна выводить свой собственный подсчет голосов и только свой собственный подсчет голосов (например: не возвращать все подсчеты голосов на этой странице)
Это код-гольф, самый короткий код выигрывает.
code-golf
quine
internet
stack-exchange-api
Dendrobium
источник
источник
perl -e'($_)=`curl -s http://api.stackexchange.com/2.2/posts/123?site=codegolf`;/score":(\d+)/&&print$1'
Похоже, это должно работать, но не работает. Но, возможно, кто-то может использовать это.using its own source
бит, чтобы запретить пользователям настраивать страницу, чтобы было легче найти себя, не внося свой вклад в подсчет байтов, в случае, если в ответе не используется метод идентификатора поста.Ответы:
jQuery + JavaScript, 85 байт
история
data
вместоd
.Рекомендуемое использование
Бонус !!
Кому не нравится бонус?
Введите идентификатор в бонус, и он скажет вам счет.
Еще больше бонусов! Запустите этот фрагмент, чтобы автоматически запустить программу, выполнить голосование и запустить снова! (Требуется rep> 15, аутентификация). Если это не работает, пожалуйста, скажите мне.источник
posts
вместоanswers
иhttp
вместо того, чтобыhttps
сохранить три байта (или, может быть, вы можетеhttp:
вообще пропустить ?). (Не проверено.)http://
и он будет 301 перенаправлять наhttps://
еще лучше, просто полностью удалите http//api.stackexchange.com...
$.get
вместо$.getJSON
. Тип содержимого API - этоapplication/json
, и jQuery автоматически обработает ответ как JSON.JavaScript ES6, 107 байт
Настоящие программисты не используют
XMLHttpRequest
. Настоящие программисты используют Fetch API .источник
fetch
не определенаБаш,
80797569 байтВ целях подсчета
\t
следует заменить символ табуляции.Это требует
w3m
, который должен быть доступен по умолчанию в большинстве дистрибутивов Linux.Спасибо @NoOneIsHere за -2 байта!
Как это работает
w3m
веб-браузер командной строки Он запрашивает URL-адрес и (обычно) отображает его содержимое в удобочитаемом формате. Здесь мы просто (ab) используем его, чтобы избежать вызоваzcat
,curl
который потребовался бы, поскольку SE обслуживает ответ API gzip-compress.tr ,: \^I
заменяет все запятые и двоеточия на вкладки, которые являютсяcut
разделителем полей по умолчанию.Наконец,
cut -f20
удаляет все, кроме двадцатого поля, которое является подсчетом голосов.источник
--compressed
, что даже дольше, чемzcat
.JavaScript ES6,
175165160145 байтовБлагодаря оптимизатору и дендробиуму сэкономлено байтов лота! Они все кратны пяти!
Используя обычный старый javascript. Кому нужны эти новомодные библиотеки? Настоящие программисты используют
XMLHttpRequest()
Проверьте это
источник
prompt
?"g"
не работает как вариант для меня.with(new XMLHttpRequest)(open("get","//api.stackexchange.com/2.2/posts/82614?site=codegolf"),onload=_=>alert(response.items[0].score),send(responseType="json"))
для -5 байтwith
TypeError: response.split(...)[12] is undefined",
bash + jq , 69 байт
Я использовал
curl
иzcat
раньше;w3m
вдохновлен ответом (поразительно похожим) Денниса. Оказываетсяjq
иtr
/cut
имеют одинаковую стоимость в байтах!источник
Выпуклый 0.5, 63 байта
Это извлекает оценку из страницы поиска вместо API, в частности из запроса https://codegolf.stackexchange.com/search?q=inquestion:82714 . К счастью,
inquestion
также работает для ответов.верификация
Как это работает
источник
05AB1E ,
898781 байтСпасибо Python ...
Использует кодировку CP-1252 .
источник
MATLAB, 103 байта
источник
JavaScript (Node.js + Unirest ), 123 байта
Мне нравится эта библиотека, потому что она автоматически анализирует JSON.
источник
Юлия,
128107 байтЭта функция не принимает никаких данных и возвращает оценку этого поста в виде строки. Требует установки
Requests
пакета.Как это работает:
get
делает запрос GET к SE APIreadall
читает необработанные байты в ответе и возвращает строкуsplit
разбивает строку на двоеточия и запятыеБлагодаря Денису сэкономлено 21 байт!
источник
JavaScript (Node.js), 166 байт
-1 байт, потому что @ CᴏɴᴏʀO'Bʀɪᴇɴ научил меня считать;)
-4 байта благодаря @NoOneIsHere
Это несколько смущает. Черт возьми, SE для gzipping вашего API! / s
Любые улучшения приветствуются.
источник
PHP, 137 байт
Довольно прямо вперед. Распаковка занимает много байтов:
Ungolfed
источник
PHP, 121 байт
Без API.
Получает весь пост и извлекает подсчет голосов с помощью регулярных выражений. (не разбирайте HTML с регулярным выражением!)
Ungolfed:
источник
http:
?05AB1E , 45 байт
Нет TIO для всей программы, потому что
.w
встроенный доступ к Интернету не работает на TIO.Объяснение:
Мы начинаем с создания URL и доступа к нему:
Попробуйте онлайн (без
.w
).После этого мы извлекаем счет из JSON:
Попробуйте онлайн.
Равная 10- байтовая альтернатива для этой второй части может быть:
Попробуйте онлайн.
Смотрите этот 05AB1E наконечника шахты (разделы Как пользоваться словарем? И Как сжать большие целые числа? ) , Чтобы понять , почему
•2íЕ
это190437
,’¸¸.‚‹º.ŒŒ/„¤/ÿ?€¼=ƒËŠˆ’
это"api.stackexchange.com/posts/ÿ?site=codegolf"
,'ŒÂ
это"score"
, и„ŒÂ‚¡
это"score after"
.PS / РЕДАКТИРОВАТЬ: я понимаю, что с помощью
þ
я предполагаю, что я никогда не получу отрицательный результат. ;)источник