Napisz program / funkcję, która zwraca liczbę głosów swojej odpowiedzi Stack Exchange w momencie jej wykonania.
- Twój program / funkcja może uzyskać dostęp do tej strony ( codegolf.stackexchange.com/questions/82609 ) z Internetu, jednak:
- Twój program / funkcja może nie akceptować żadnych danych wejściowych użytkownika i
- Stosowanie skracaczy URL jest niedozwolone
- Twój program / funkcja może wykorzystywać tylko własne źródło jako punkt odniesienia do liczenia głosów (na przykład: brak ciągów tekstowych w zawartej odpowiedzi, ale nie we własnym źródle)
- Twój program / funkcja musi wyświetlać własną liczbę głosów i tylko własną liczbę głosów (na przykład: nie zwraca wszystkich głosów na tej stronie)
To jest golf golfowy, wygrywa najkrótszy kod.
code-golf
quine
internet
stack-exchange-api
Dendrobium
źródło
źródło
perl -e'($_)=`curl -s http://api.stackexchange.com/2.2/posts/123?site=codegolf`;/score":(\d+)/&&print$1'
wygląda na to, że powinno działać, ale nie działa. Ale może ktoś może tego użyć.using its own source
bit, aby uniemożliwić użytkownikom konfigurację strony, aby ułatwić znalezienie się bez zwiększania liczby bajtów w przypadku, gdy odpowiedź nie używa metody post id.Odpowiedzi:
jQuery + JavaScript, 85 bajtów
Historia
data
zamiastd
.Zalecane użycie
Premia!!
Kto nie lubi premii?
Wprowadź identyfikator do premii, a powiesz wynik.
Jeszcze więcej bonusu !! Uruchom ten fragment kodu, aby automatycznie uruchomić program, oceń i uruchom ponownie! (Wymaga powtórzenia> 15, autoryzacja). Jeśli to nie działa, proszę powiedz mi.źródło
posts
zamiastanswers
ihttp
zamiasthttps
oszczędza trzy bajty (a może możnahttp:
całkowicie pominąć ?). (Nietestowane.)http://
a 301 jeszcze przekieruje nahttps://
Lepsze, po prostu usuń http całkowicie//api.stackexchange.com...
$.get
zamiast$.getJSON
. Typ zawartości interfejsu API toapplication/json
, a jQuery automatycznie potraktuje odpowiedź jako JSON.JavaScript ES6, 107 bajtów
Prawdziwi programiści nie używają
XMLHttpRequest
. Prawdziwi programiści używają interfejsu API Fetch .źródło
fetch
nie został zdefiniowanyBash,
80797569 bajtówDo celów punktacji
\t
należy zastąpić znakiem TAB.Wymaga to
w3m
, które powinno być domyślnie dostępne w większości dystrybucji Linuksa.Dzięki @NoOneIsHere za -2 bajty!
Jak to działa
w3m
to przeglądarka internetowa z wierszem poleceń. Sprawdza adres URL i (zwykle) wyświetla jego treść w czytelnym formacie. Tutaj po prostu (ab) używamy go, aby uniknąć wywołaniazcat
tegocurl
, ponieważ byłoby to konieczne, ponieważ SE obsługuje odpowiedź API skompresowaną gzip.tr ,: \^I
zastępuje wszystkie przecinki i dwukropki tabulatorami, które sącut
domyślnym separatorem pól.Na koniec
cut -f20
usuwa wszystko oprócz dwudziestego pola, które jest liczbą głosów.źródło
--compressed
, co jest nawet dłuższe niżzcat
.JavaScript ES6,
175165160145 bajtówZaoszczędź dużo bajtów dzięki Optimizer i Dendrobium! Wszystkie są wielokrotnościami pięciu!
Korzystanie ze zwykłego javascript. Kto potrzebuje tych nowomodnych bibliotek? Prawdziwi programiści wykorzystanie
XMLHttpRequest()
Przetestuj to
źródło
prompt
?"g"
nie działa dla mnie jako opcja.with(new XMLHttpRequest)(open("get","//api.stackexchange.com/2.2/posts/82614?site=codegolf"),onload=_=>alert(response.items[0].score),send(responseType="json"))
dla -5 bajtówwith
TypeError: response.split(...)[12] is undefined",
bash + jq , 69 bajtów
Użyłem
curl
izcat
wcześniej;w3m
jest inspirowany odpowiedzią Dennisa (uderzająco podobną). Okazuje się,jq
itr
/cut
mają ten sam koszt bajtów!źródło
Wypukłe 0,5, 63 bajty
Spowoduje to pobranie wyniku ze strony wyszukiwania zamiast interfejsu API, w szczególności z zapytania https://codegolf.stackexchange.com/search?q=inquestion:82714 . Na szczęście
inquestion
działa również w przypadku odpowiedzi.Weryfikacja
Jak to działa
źródło
05AB1E ,
898781 bajtówDzięki Python ...
Wykorzystuje kodowanie CP-1252 .
źródło
MATLAB, 103 bajty
źródło
JavaScript (Node.js + Unirest ), 123 bajty
Podoba mi się ta biblioteka, ponieważ automatycznie analizuje JSON.
źródło
Julia,
128107 bajtówJest to funkcja, która nie pobiera danych wejściowych i zwraca wynik tego postu jako ciąg znaków. Wymaga zainstalowania
Requests
pakietu.Jak to działa:
get
wysyła żądanie GET do SE APIreadall
odczytuje surowe bajty w odpowiedzi i zwraca ciąg znakówsplit
dzieli ciąg na dwukropki i przecinkiZaoszczędzono 21 bajtów dzięki Dennisowi!
źródło
JavaScript (Node.js), 166 bajtów
-1 bajt, ponieważ @ CᴏɴᴏʀO'Bʀɪᴇɴ nauczył mnie liczyć;)
-4 bajty dzięki @NoOneIsHere
To jest trochę zawstydzające. Cholera SE za zgzipowanie API! / s
Wszelkie ulepszenia są bardzo mile widziane.
źródło
PHP, 137 bajtów
Całkiem prosto. Rozpakowywanie zajmuje dużo bajtów:
Bez golfa
źródło
PHP, 121 bajtów
Bez interfejsu API
Pobiera cały post i wyodrębnia liczenie głosów za pomocą wyrażenia regularnego. (nie analizuj HTML za pomocą wyrażenia regularnego!)
Nie golfowany:
źródło
http:
?05AB1E , 45 bajtów
Brak TIO dla całego programu, ponieważ
.w
wbudowany dostęp do Internetu nie działa na TIO.Wyjaśnienie:
Zaczynamy od utworzenia adresu URL i uzyskania do niego dostępu:
Wypróbuj online (bez
.w
).Następnie wyodrębniamy partyturę z JSON:
Wypróbuj online.
Równa 10 bajtów alternatywa dla tej drugiej części może być:
Wypróbuj online.
Zobacz moją wskazówkę 05AB1E (sekcje Jak korzystać ze słownika? I Jak kompresować duże liczby całkowite? ), Aby zrozumieć, dlaczego
•2íЕ
jest190437
,’¸¸.‚‹º.ŒŒ/„¤/ÿ?€¼=ƒËŠˆ’
jest"api.stackexchange.com/posts/ÿ?site=codegolf"
,'ŒÂ
jest"score"
i„ŒÂ‚¡
jest"score after"
.PS / EDYCJA: Zdaję sobie sprawę, że używając
þ
zakładam, że nigdy nie dostanę negatywnego wyniku. ;)źródło