Java, 540 ký tự
Cảnh báo: số tiền thưởng đang hoạt động là ~ 470. Mã này sẽ truy cập một trang trên stackoverflow nhiều lần. Nó có thể khiến bạn gặp rắc rối với họ vì đã thực hiện rất nhiều yêu cầu dữ liệu.
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;}}}
Đầu ra của tôi là 23400
, nhưng khi tôi chạy mã của @ TonyH, tôi đã nhận được 37550
. Tin xấu.
Mã đẹp:
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;
}
}
}
Cách làm việc này rất đơn giản. Nó đọc từ urlhttp://stackoverflow.com/questions"
để xác định số lượng câu hỏi có tiền thưởng (lưu ý: nếu số lượng tăng, chương trình không thành công, nhưng nếu giảm, nó hoạt động tốt). Nó tìm kiếm số này bằng regex : b.>(\\d+)
. Điều này đã làm việc trong tất cả các bài kiểm tra cho đến nay, nhưng nếu ai đó hỏi một câu hỏi phù hợp với biểu thức chính quy đó, thì điều này có thể không hoạt động.
Sau đó, chúng tôi mở url http://stackoverflow.com/questions?pagesize=1&sort=featured&page=
+ current question #
. Nói cách khác, chúng tôi mở một trang mới cho mỗi câu hỏi nổi bật và buộc số lượng câu hỏi chỉ là1
, vì vậy chúng tôi sẽ có được tất cả. Phần danh tiếng sẽ luôn luôn phù hợpion.>.(\\d+)
, vì vậy tôi sử dụng nó để tìm thấy nó. Tôi chia hoạt động thành hai phần để tôi có thể kiểm tra giá rẻ nếu số lượng câu hỏi giảm (tức là chuỗi trả về không phải là số nguyên).
Sau đó, chúng tôi tổng hợp tất cả danh tiếng và in nó.
Mất khoảng 3 phút 20 giây để chạy trên máy của tôi.
Có ai biết tại sao nó không in đúng số không?