To pytanie jest inspirowane faktem, że uwielbiam widzieć pytania o równym głosowaniu i odpowiedzi się liczą ...
Więc oto prosty stos-wymiana-api wyzwanie dla was wszystkich:
Wyzwanie:
Biorąc pod uwagę codegolf.stackexchange
identyfikator pytania, wypisz stosunek między głosami pytania a liczbą odpowiedzi (np votes/answers
.).
Specyfika:
Możesz uzyskać dostęp do Internetu, ale możesz uzyskać dostęp tylko do
stackexchange.com
różnych jego subdomen. Nie możesz używać skracaczy URL.Możesz przyjmować dane wejściowe i przekazywać dane wyjściowe w dowolnym standardowym formacie.
Musisz wypisać stosunek jako liczbę dziesiętną w podstawie 10, z co najmniej 4 {dokładnymi} cyframi po przecinku (zera mogą zostać obcięte).
Jeśli pytanie pozostanie bez odpowiedzi, twój program może wywołać niezdefiniowane zachowanie.
Powinieneś użyć
score
pytania jako liczby głosów, patrz tutaj .
To jest golf golfowy , najmniej bajtów w każdym języku wygrywa dla tego języka, najmniej bajtów ogólnie wygrywa.
Oto przykładowy program w 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"])
źródło
Odpowiedzi:
JavaScript (ES6),
103102 bajtówMusi być uruchamiany z poziomu katalogu głównego
api.stackexchange.com
. ZwracaPromise
obiekt zawierający wynik.Jeśli wymaga się, aby było uruchamiane z określonej ścieżki, jest to dozwolone, to staje się
9290 bajtów.Spróbuj
Dodano pełny adres URL, aby umożliwić jego działanie tutaj.
źródło
i=>(j=i.items[0])
się({items:[j]})=>j
zapisać bajt.Stratos , 40 bajtów
-4 bajty dzięki Shaggy
Spróbuj!
Stratos specjalizuje się w pytaniach dotyczących wymiany stosów .
Wyjaśnienie:
Kod dekompresuje się w następujący sposób:
Począwszy od pierwszego wiersza, Stratos ocenia diady od prawej do lewej.
f"api.stackexchange.com/questions/%?site=codegolf"r"items"@0
oznacza „oceń diadem@
za pomocą argumentu po lewej stronief"api.stackexchange.com/questions/%?site=codegolf"r"items"
i argumentu po prawej stronie0
.@
pobiera n-ty element tablicy JSON.Aby ocenić
f"api.stackexchange.com/questions/%?site=codegolf"r"items"
, będziemy następnie oceniać diadęr
z argumentem po lewej stronief"api.stackexchange.com/questions/%?site=codegolf"
i argumentem po prawej stronie"items"
.r
pobiera tablicę JSON o określonej nazwie.Następnie będziemy musieli ocenić
f"api.stackexchange.com/questions/%?site=codegolf"
. Najpierw%
zastępuje się wejściem.f
oznacza „pobierz zawartość tego adresu URL”.Teraz możemy przejść do drugiej linii. Nowy wiersz oznacza „dodaj to, co oceniliśmy, do niejawnej listy argumentów”
Następnie oceniamy
s
(otrzymujemy ciąg znaków w obiekcie JSON o określonej nazwie) za pomocą{
i"answer_count"
.{
pobiera element z niejawnego stosu argumentów, zwraca go i dodaje z powrotem do stosu.Następnie dodajemy wynik tego do niejawnego stosu argumentów.
Aby ocenić
⁰s"score"/
, stosujemy diad/
(dzielenie)⁰s"score"
i element z niejawnego stosu argumentów.Do oceny
⁰s"score"
otrzymujemy ciąg"score"
z obiektu JSON z elementu 0 w stosie argumentów implict.Teraz wyjście
/
jest drukowane i program się kończy.źródło
2.2/
).R + jsonlite , 111 bajtów
Link do skrzypca R.
jsonlite jest ładną biblioteką konwersji JSON <-> R, która działa całkiem dobrze. Nie zamierzałem grać w parser JSON dla R ...
źródło
http
protokołu. Zgaduję też, że142729
nie powinno się tam na stałe wpisywać?T-SQL,
6454 bajtówRzadko zdarza się, że SQL potrafi pokonać (większość) innych języków! Zamiast adresu URL interfejsu API poszedłem bezpośrednio do Eksploratora danych stosu wymiany :
To
##i##
nie jest standardowy SQL, to format stosu Exchange Exchange z monitem o wprowadzenie danych.Pamiętaj, że źródło eksploratora danych jest aktualizowane tylko co noc, więc wartości nie są aktualne.
Wyrzuci błąd dzielenia przez zero na pytania bez odpowiedzi.
Edycja : Zapisano 10 bajtów, mnożąc przez 1,0 zamiast jawnie
CONVERT
doFLOAT
.źródło
PowerShell , 130 bajtów
Wykonuje
I
nvoke-W
ebR
eQUEST przeciwko URL, dostaje.content
ich, robiConvertFrom-Json
z tych treści, i dostaje.items
z tego obiektu JSON. Przechowuje to$a
i wyciąga.score
jako licznik. Mianownikiem jest.answer_count
. Ta wartość pozostawia się w potoku, a dane wyjściowe są niejawne.Jeśli pytanie nie zostanie udzielone, powinno to spowodować błąd „Podziel przez zero”.
źródło
Japt ,
8382 bajtyChciałem spróbować, jak to się sprawdzi, ponieważ Japt nie może natywnie tego dokonać. Zasadniczo wszystko to robi
eval
skompresowana wersja mojego rozwiązania JS . Ponieważ Japt to JS, możemy wymagać, aby uruchamiało się to z poziomu katalogu głównego,api.stackexchange.com
a także zwracałoPromise
obiekt zawierający wynik.//api.stackexchange.com/
do adresu URL,console.log
dzięki czemu można zobaczyć, że działaźródło
Mathematica, 124 bajty
Mathematica ma wywoływany typ danych
Rule
, co mnie dezorientuje. : Pźródło
Żądania w języku Python 3 +, 149 bajtów
-1 bajt dzięki Mr. Xcoder.
źródło
http
wystarczy.PHP, 167 bajtów
Turbo-szybki crack w tym. Zapisz jako plik i uruchom w terminalu tak:
Może to być sposób na zmniejszenie tego.
źródło