Jawa, 540 karakter
Peringatan: jumlah karunia aktif adalah ~ 470. Kode ini akan mengakses halaman di stackoverflow yang berkali-kali. Mungkin membuat Anda bermasalah dengan mereka karena membuat begitu banyak permintaan data.
import java.io.*;import java.net.*;public class B{public static void main(String[]A){String u="http://stackoverflow.com/questions",d;Long i,s=i=0L,n=i.parseLong(o(u).replaceAll("^.*b.>(\\d+).*$","$1"));while(i++<n){d=o(u+"?pagesize=1&sort=featured&page="+n).replaceAll("^.*ion.>.(\\d+).*$","$1");s+=d.matches(".*\\D.*")?0:n.parseLong(d);}System.out.print(s);}static String o(String s){String d="";try{BufferedReader r=new BufferedReader(new InputStreamReader(new URL(s).openStream()));while((s=r.readLine())!=null)d+=s;}finally{return d;}}}
Output saya 23400
, tetapi ketika saya menjalankan kode @ TonyH, saya mendapatkannya 37550
. Kabar buruk.
Kode cantik:
import java.io.*;
import java.net.*;
public class StackOverflowBounty {
public static void main(String[] args) {
String u = "http://stackoverflow.com/questions", d;
Long i, s = i = 0L, n = i.parseLong(o(u).replaceAll("^.*b.>(\\d+).*$", "$1"));
while (i++ < n) {
d = o(u + "?pagesize=1&sort=featured&page=" + n).replaceAll("^.*ion.>.(\\d+).*$", "$1");
s += d.matches(".*\\D.*") ? 0 : n.parseLong(d);
}
System.out.print(s);
}
static String o(String s) {
String d = "";
try {
BufferedReader r = new BufferedReader(new InputStreamReader(new URL(s).openStream()));
while ((s = r.readLine()) != null) {
d += s;
}
} finally {
return d;
}
}
}
Cara kerjanya sederhana. Bunyinya dari url http://stackoverflow.com/questions"
untuk menentukan jumlah pertanyaan yang memiliki karunia (catatan: jika jumlahnya meningkat, program gagal, tetapi jika turun, itu berfungsi dengan baik). Ini mencari nomor ini menggunakan regex: b.>(\\d+)
. Ini telah bekerja di semua tes hingga saat ini, tetapi jika seseorang mengajukan pertanyaan yang cocok dengan regex itu, ini mungkin tidak berhasil.
Lalu, kita buka url http://stackoverflow.com/questions?pagesize=1&sort=featured&page=
+ current question #
. Dengan kata lain, kami membuka halaman baru untuk setiap pertanyaan unggulan, dan memaksa jumlah pertanyaan hanya 1
, jadi kami akan mendapatkan semuanya. Bagian reputasi akan selalu cocok ion.>.(\\d+)
, jadi saya menggunakannya untuk menemukannya. Saya membagi operasi menjadi dua bagian sehingga saya bisa dengan murah memeriksa apakah jumlah pertanyaan berkurang (yaitu string yang dikembalikan bukan bilangan bulat).
Lalu, kami meringkas semua reputasi dan mencetaknya.
Butuh sekitar 3 menit dan 20 detik untuk berjalan di mesin saya.
Adakah yang tahu mengapa ini tidak mencetak nomor yang benar?