Berapa banyak jawaban yang dimiliki pertanyaan ini?

16

Tulis program atau fungsi yang menghasilkan jumlah jawaban integer yang dimiliki pertanyaan ini. Solusi Anda harus tetap berfungsi karena lebih banyak jawaban ditambahkan.

Bahasa yang berjalan di browser dapat dijalankan dari konsol js saat berada di halaman ini. Kalau tidak, Anda mungkin harus mengunduh halaman ini. Solusi multi-bahasa, mis. wgetIng halaman dan parsing menggunakan grepok. Ringkas saja baris perintah dan semua sumber yang digunakan.

Ini adalah kode golf; jawaban terpendek dalam byte menang.

EDIT:

Mari kita memungkinkan paling banyak satu kejadian url halaman ini untuk tidak dihitung, baik sebagai input atau dalam sumber. Tidak ada penyingkat url, tidak ada data yang disimpan sebagai parameter, dll. Kutipan di sekitar url, jika perlu, masih dihitung. Mengambil url sebagai input juga baik-baik saja. Jika Anda ingin menghapus beberapa bagian dari url, misalnya /how-many-answers..., Anda bisa, tetapi mungkin tidak membantu Anda.

Filip Haglund
sumber
Mungkin sudah terlambat untuk memutuskan hal ini sekarang, tetapi haruskah penghitungan mencakup jawaban yang dihapus?
Dennis
2
@ Dennis Saya tidak dapat melihat jawaban yang dihapus, jadi saya akan mengatakan tidak ada yang perlu khawatir tentang mereka. Hitung mereka jika Anda mau. Saya tidak akan menghitungnya karena saya tidak bisa melihatnya.
Filip Haglund
Bisakah fungsi menerima url sebagai input? Apakah input kemudian diperhitungkan terhadap bytecount?
JungHwan Min
2
@FilipHaglund, saya pikir akan lebih masuk akal untuk memiliki jumlah byte URL dalam kode dikurangi dari jumlah total atau menjadikannya sebagai input karena hal semacam itu membuat tidak mungkin untuk bahasa yang tidak berjalan di browser. untuk memiliki kesempatan menang
Daniel
1
Itu (meskipun dalam beberapa bahasa mengambil input mungkin memerlukan lebih banyak byte) atau hanya memungkinkan untuk mengurangi jika URL http://...muncul kata demi kata dalam kode sumber.
Dennis

Jawaban:

14

Javascript + jQuery, 23 byte

_=>+$("h2>span").text()
Johan Karlsson
sumber
Tidak bisakah ini gagal jika ada h2>spanbagian tubuh tantangan?
Martin Ender
3
Mungkin lebih baik menambahkannya ke jawabannya. :)
Martin Ender
1
Apakah ini dapat dibuat runnable ("run code snippet")?
RudolfJelin
13
Perhatikan bahwa ini menggunakan jQuery yang bukan JavaScript murni (artinya tidak boleh diberi label hanya sebagai "JavaScript"). Menggunakan perpustakaan yang termasuk di atas bahasa setidaknya harus dinyatakan secara eksplisit. Saya tidak berdebat menentang penggunaan jQuery, hanya saja harus dinyatakan.
Makyen
1
Jaringan @Makyen StackOverflow menggunakan jQuery. Pertanyaannya mengatakan "Bahasa yang berjalan di browser dapat dijalankan dari konsol js saat berada di halaman ini.". jQuery tidak harus dimuat, karena sudah ada. Mungkin itu sebabnya jQuery tidak ditentukan.
Ismael Miguel
4

Mathematica, 33 byte

Length@Import[#,"Data"][[4,2]]-1&

Masukan adalah url halaman ini.

JungHwan Min
sumber
4

Python 2, 120 byte, 79 w / o URL

Saya tidak bisa mengatakan Python dibuat untuk tantangan ini.

import urllib
print[l for l in urllib.urlopen("http://codegolf.stackexchange.com/q/96298")if"answerCount"in l][0][83:-9]

Sayangnya, inline import memiliki panjang yang sama :(

Setiap bantuan dengan bermain golf ini akan sangat dihargai!

Jika URL (41 byte kekalahan — lebih dari 1/3 jumlah byte saya) dapat diambil sebagai input, itu adalah 82 byte:

import urllib
lambda u:[l for l in urllib.urlopen(u)if"answerCount"in l][0][83:-9]
Daniel
sumber
1
Coba gunakan requestsperpustakaan
noɥʇʎԀʎzɐɹƆ
Saya pikir garis miring dapat dihilangkan ...?
TheInitializer
@TheInitializer, oh ya terima kasih!
Daniel
Jika Anda mengubah baris import urllibuntuk import urllib as ukemudian Anda dapat menyimpan 3 byte
sonrad10
@ sonrad10, bagaimana bisa begitu? Panjangnya sama, kan?
Daniel
3

Javascript, 67 byte

alert($(".answers-subheader").children().first().children().html())

Ini terlihat terlalu lama

TuxCrafting
sumber
3

Javascript (ES5), 46 44 40 38 33 byte

_=>parseInt($('#answers').text())

5 byte disimpan berkat Ismael Miguel

Catatan: Ini sangat lambat, dan tidak akan berfungsi jika Anda memiliki skrip users PPCG-Design.

Khusus ASCII
sumber
Ini tidak jauh berbeda dari jawaban Javascript lainnya . Sebenarnya, ini hanyalah versi yang tidak dioptimalkan.
Ismael Miguel
@IsmaelMiguel 1. Ini ditulis sebelum yang lain, dan 2. Ia menggunakan elemen sebelum yang tersembunyi yang digunakan jawaban lain.
ASCII
Cukup adil. Tapi Anda bisa menggunakannya parseInt($('#answers').text()), mana yang akan berhasil. Itu menghemat beberapa byte.
Ismael Miguel
3

CJam, 15 byte

lg"2>"/1=A>S/0=

Diharapkan URL halaman ini sebagai input.

Bagaimana itu bekerja

l                e# Read a line (the URL) from STDIN.
 g               e# Fetch the resource the URL points to.
  "2>"/          e# Split the source at occurrences of "2>".
       1=        e# Select the second chunk, i.e., everything between the first
                 e# <h2> and the first </h2>.
         A>      e# Discard the first 10 characters (a linefeed and 9 tabs).
           S/0=  e# Split at spaces and select the first chunk.
Dennis
sumber
1

171 byte bash + 3 tombol lynx

lynx -cfg=<(echo PRINTER:Answercount:grep [0-9]*.Answers %s|less:FALSE:999') http://codegolf.stackexchange.com/questions/96298/how-many-answers-does-this-question-have
Roman Czyborra
sumber
Count Count baru saja naik dari 5 menjadi 6 ;-)
Roman Czyborra
1
Anda bisa menggantinya http:// ... denganhttp://codegolf.stackexchange.com/q/96298
JungHwan Min
Saya lebih suka nol redirect karena saya masih akan tertinggal di belakang bahkan dengan 171-49 = 122.
Roman Czyborra
1

99 byte sh + curl + jq + stackexchange API

curl -s --compressed api.stackexchange.com/questions/96298/answers?site=codegolf|jq .items\|length

Menggunakan API, saya dapat menghindari masalah yang terkait dengan pemformatan halaman dan html. Sayangnya, 60 byte jawaban saya adalah url golf maksimal untuk kueri api khusus ini, dan 13 byte lainnya untuk curl untuk unzip hasil kueri, karena stackexchange menolak untuk menyajikan data yang tidak terkompresi melalui api.

"Logika" yang sebenarnya berasal dari curling api untuk meminta balasan json dengan jawaban untuk posting ini. Itu membuka ritsleting dan kemudian disalurkan ke jq, parser json, yang mengekstrak array "item" dan menampilkan panjangnya.

Anda bisa mendapatkan mengesankan dekat untuk memiliki api hanya mengembalikan jumlah jawaban, tapi dari apa yang saya bisa datang dengan Anda tidak bisa mendapatkan 100% dari perjalanan ke sana, dan semakin dekat akan biaya lebih byte dari sekedar lewat melalui JQ.

101 byte untuk mengembalikan {"total":}:

curl -s --compressed api.stackexchange.com/questions/96298/answers?site=codegolf&filter=!)V)MSZJUgX_

Parameter filter dalam kueri api sangat kuat, tetapi kurang memberikan solusi "hanya mengeritingkan url". Mungkin ada jalan tengah di sini, di mana Anda bisa mendapatkan respons yang lebih pendek dan kemudian hanya menghitung garis atau mengekstrak angka, tetapi sayangnya string filter adalah panjang yang ditetapkan, dan perintah jq yang diperlukan sudah lebih efisien.

LinusKrom
sumber
Keren. Perhatikan bahwa Anda dapat menyimpan banyak byte menggunakan pemendek URL dan menambahkan opsi -L untuk membuat curl ikuti arahan ulang; misalnyacurl -sL --compressed bit.ly/2ebw404|jq .total
sergioFC
1
@sergioFC penyingkat URL dilarang secara default.
Dennis
@ Dennis Tidak tahu itu, terima kasih.
sergioFC
1

PHP, 76 (Kode) + 41 (URL) = 117 byte

preg_match_all('<h2>(.*) answers<span',file_get_contents("http://codegolf.stackexchange.com/q/96298"),$o);
echo $o[0];
Roman Gräf
sumber
1

Java, 230 269-41 = 228 byte

interface A{static void main(String[]a)throws Exception{System.out.print(new java.util.Scanner(new java.net.URL("http://codegolf.stackexchange.com/q/96298").openStream()).useDelimiter("\\Z").next().replaceAll("\n|\r","").replaceAll("^.+?\\s+(\\d+) Answers.+$","$1"));}}

(Hanya menghitung jawaban yang tidak dihapus)

SuperJedi224
sumber
0

JavaScript + jQuery (sudah termasuk dalam halaman), 20 byte

+$('h2>span').text()

Ini adalah program yang dimaksudkan untuk dijalankan di konsol untuk halaman saat ini (dibuka dengan F12). Ini menghasilkan jumlah jawaban, tanpa tanda kutip. Ini bekerja di Chrome, Firefox, IE11, dan Edge. Seharusnya bekerja di browser lain, tetapi saya hanya mengujinya di yang terdaftar.

Tidak seperti solusi JavaScript lainnya di sini, ini adalah program dengan sendirinya daripada ekspresi fungsi menggunakan notasi fungsi panah ES6 . Juga tidak seperti solusi itu, sebenarnya menghasilkan output (tanpa tanda kutip) di konsol dengan jumlah jawaban (bukan hanya menjadi ekspresi fungsi yang tidak menghasilkan output). Memproduksi output bergantung pada fitur di setiap konsol browser bahwa nilai ekspresi adalah output setelah ekspresi itu dievaluasi.

Ini bergantung pada satu-satunya <span>pada halaman dengan orang tua yang merupakan <h2>elemen adalah yang berisi jumlah jawaban sebagai konten teksnya. Setelah eksperimen, muncul ini menjadi kasus, dan tidak muncul mungkin untuk sengaja membuat <h2>dengan <span>anak menggunakan editor: semua secara eksplisit dimasukkan <span>unsur dilucuti dan tidak ada penurunan harga , seperti yang digunakan pada Stack Exchange, menciptakan aktual <span>dalam sebuah <h2>. Jika seseorang dapat mendemonstrasikan kasus di mana halaman dapat dimanipulasi sehingga 'h2>span'pemilih tidak lagi unik, maka ini perlu direvisi.

Jika mengevaluasi ke string bukan angka diterima, maka

JavaScript + jQuery (sudah termasuk dalam halaman), 19 byte

$('h2>span').text()

Namun, sementara ini tidak mengevaluasi untuk memasukkan "", dalam semua konsol yang diuji itu menghasilkan output yang terlampir di dalamnya "". Saya membaca komentar Filip Haglund tentang pertanyaan yang menghalangi hasil ini.

Makyen
sumber
0

R, 80 byte

Jawaban didasarkan pada pencarian vektor yang dikembalikan dengan readLinesmenggunakan ekspresi reguler. Saya menduga ini bisa dipecahkan oleh teks dalam komentar / jawaban (bahkan mungkin saya sendiri). Akan dihapus jika demikian. Selain itu polanya juga dapat di-gofled tetapi tidak yakin apakah itu akan meningkatkan kemungkinan mendapatkan nilai yang salah.

x=readLines(scan(,""));regmatches(x,regexpr("(?<=answerCount\">).*?(?=<)",x,,T))
Billywob
sumber