Java, 540 Zeichen
Achtung: Die Anzahl der aktiven Kopfgelder beträgt ~ 470. Dieser Code greift mehrmals auf eine Seite im Stapelüberlauf zu. Es kann Ihnen Probleme bereiten, wenn Sie so viele Datenanforderungen stellen.
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;}}}
Meine Ausgabe war 23400 , aber als ich @ TonyHs Code laufen ließ, bekam ich 37550. Schlechte Nachrichten.
Schöner Code:
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;
}
}
}
Die Funktionsweise ist einfach. Es liest aus der URLhttp://stackoverflow.com/questions" , um die Anzahl der Fragen mit Kopfgeldern zu bestimmen (Hinweis: Wenn die Anzahl zunimmt, schlägt das Programm fehl, aber wenn es abfällt, funktioniert es einwandfrei). Es wird nach dieser Nummer mit der Regex: b.>(\\d+). Dies hat bisher in allen Tests funktioniert, aber wenn jemand eine Frage gestellt hat, die diesem regulären Ausdruck entspricht, funktioniert dies möglicherweise nicht.
Dann öffnen wir die URL http://stackoverflow.com/questions?pagesize=1&sort=featured&page=+ current question #. Mit anderen Worten, wir öffnen für jede vorgestellte Frage eine neue Seite und erzwingen, dass nur die Anzahl der Fragen angegeben wird1 , damit wir sie alle erhalten. Der Reputationsteil wird immer übereinstimmen ion.>.(\\d+), also benutze ich ihn, um ihn zu finden. Ich habe die Operation in zwei Teile geteilt, um kostengünstig zu überprüfen, ob die Anzahl der Fragen reduziert wurde (dh die zurückgegebene Zeichenfolge ist keine Ganzzahl).
Dann fassen wir den Ruf zusammen und drucken ihn aus.
Es dauerte ungefähr 3 Minuten und 20 Sekunden, um auf meinem Computer zu laufen.
Weiß jemand, warum nicht die richtige Nummer gedruckt wird?