Pertanyaan ini terinspirasi oleh fakta bahwa saya suka melihat pertanyaan dengan jumlah suara dan jawaban yang sama ...
Jadi, inilah tantangan stack-exchange-api sederhana untuk kalian:
Tantangan:
Diberikan codegolf.stackexchange
id pertanyaan, output rasio antara suara pertanyaan dan jumlah jawaban (misalnya votes/answers
).
Spesifik:
Anda dapat mengakses internet, tetapi Anda hanya dapat mengakses
stackexchange.com
dan berbagai sub-domainnya. Anda tidak boleh menggunakan penyingkat URL.Anda dapat mengambil input dan memberikan output dalam format standar apa pun.
Anda harus menampilkan rasio sebagai angka desimal di basis 10, dengan setidaknya 4 {akurat} digit setelah desimal (nol dapat terpotong).
Jika pertanyaan tidak dijawab, program Anda dapat menghasilkan perilaku yang tidak terdefinisi.
Anda harus menggunakan
score
pertanyaan sebagai penghitungan suara, lihat di sini .
Ini adalah kode-golf , setidaknya byte dalam setiap bahasa menang untuk bahasa itu, paling tidak keseluruhan byte menang secara keseluruhan.
Berikut adalah contoh program di 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"])
sumber
Jawaban:
JavaScript (ES6),
103102 bytePerlu dijalankan dari tingkat root
api.stackexchange.com
. MengembalikanPromise
objek yang berisi hasil.Jika mengharuskan dijalankan dari jalur tertentu diizinkan maka itu menjadi
9290 byte.Cobalah
URL lengkap ditambahkan untuk mengaktifkannya di sini.
sumber
i=>(j=i.items[0])
dengan({items:[j]})=>j
untuk menyimpan byte.Stratos , 40 byte
-4 byte terima kasih kepada Shaggy
Cobalah!
Stratos berspesialisasi dalam pertanyaan stack-exchange-api .
Penjelasan:
Kode ini didekompresi menjadi sebagai berikut:
Mulai dari baris pertama, Stratos mengevaluasi angka dua dari kanan ke kiri.
f"api.stackexchange.com/questions/%?site=codegolf"r"items"@0
berarti "mengevaluasi angka dua@
dengan argumen kirif"api.stackexchange.com/questions/%?site=codegolf"r"items"
dan argumen kanan0
.@
mendapatkan elemen ke - n dari array JSON.Untuk mengevaluasi
f"api.stackexchange.com/questions/%?site=codegolf"r"items"
, kita selanjutnya akan mengevaluasi angka duar
dengan argumen kirif"api.stackexchange.com/questions/%?site=codegolf"
dan argumen kanan"items"
.r
mendapatkan array JSON dengan nama yang ditentukan.Selanjutnya, kita perlu mengevaluasi
f"api.stackexchange.com/questions/%?site=codegolf"
. Pertama,%
diganti dengan input.f
berarti "dapatkan isi dari URL ini".Sekarang, kita bisa beralih ke baris kedua. Baris baru berarti "tambahkan apa yang kami evaluasi ke daftar argumen implisit"
Selanjutnya, kami mengevaluasi
s
(mendapatkan string dalam objek JSON dengan nama tertentu) dengan{
dan"answer_count"
.{
mengambil elemen dari stack argumen implisit, mengembalikannya, dan menambahkannya kembali ke stack.Kemudian, kami menambahkan output itu ke tumpukan argumen implisit.
Untuk mengevaluasi
⁰s"score"/
, kami menerapkan angka dua/
(bagi)⁰s"score"
dan elemen dari tumpukan argumen implisit.Untuk mengevaluasi
⁰s"score"
kita mendapatkan string"score"
dari objek JSON dari elemen 0 dalam tumpukan argumen implisit.Sekarang, output
/
dicetak dan program berakhir.sumber
2.2/
).R + jsonlite , 111 byte
Tautan r-biola
jsonlite adalah pustaka konversi JSON <-> R bagus yang berfungsi dengan baik. Saya tidak akan golf parser JSON untuk R ...
sumber
http
protokol. Juga, saya kira142729
tidak seharusnya hardcode di sana?T-SQL,
6454 byteJarang SQL bisa mengalahkan (sebagian besar) bahasa lain! Alih-alih URL API, saya langsung pergi ke Stack Exchange Data Explorer :
The
##i##
tidak SQL standar, itu format yang Stack Exchange untuk cepat untuk masukan.Perhatikan bahwa sumber data explorer hanya diperbarui setiap malam, sehingga nilainya tidak terkini.
Akan membagi kesenjangan dengan nol pada pertanyaan tanpa jawaban.
Sunting : Disimpan 10 byte dengan mengalikan dengan 1,0 bukannya eksplisit
CONVERT
keFLOAT
.sumber
PowerShell , 130 byte
Melakukan
I
nvoke-W
ebR
equest terhadap URL, memperolehnya.content
, melakukanConvertFrom-Json
konten itu, dan mendapatkan.items
objek JSON itu. Simpan itu ke dalam$a
dan tarik keluar.score
sebagai pembilang. Penyebutnya adalah.answer_count
. Nilai itu ditinggalkan di jalur pipa dan hasilnya tersirat.Jika pertanyaan tidak dijawab, ini harus melemparkan kesalahan "Bagi dengan nol".
sumber
Japt ,
8382 byteIngin mencoba ini untuk melihat bagaimana itu akan berhasil, mengingat Japt tidak bisa menyelesaikannya secara asli. Pada dasarnya semua ini dilakukan adalah
eval
versi terkompresi dari solusi JS saya . Karena Japt adalah JS maka kita dapat meminta agar ini dijalankan dari level rootapi.stackexchange.com
dan juga mengembalikanPromise
objek yang berisi hasilnya.//api.stackexchange.com/
URL danconsole.log
agar Anda dapat melihatnya bekerjasumber
Mathematica, 124 byte
Mathematica memiliki tipe data yang dipanggil
Rule
dan membingungkan saya. : Psumber
Python 3 + permintaan, 149 byte
-1 byte terima kasih kepada Tn. Xcoder.
sumber
http
sudah cukup.PHP, 167 byte
Turbo-fast crack saat ini. Simpan sebagai file dan jalankan di terminal seperti:
Mungkin ada cara untuk mengurangi ini.
sumber