Java, 540 caracteres
Aviso: o número de recompensas ativas é ~ 470. Este código acessará uma página no stackoverflow tantas vezes. Você pode ter problemas com eles por fazer tantas solicitações de dados.
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;}}}
Minha saída foi 23400
, mas quando corri o código do @ TonyH, obtive 37550
. Más notícias.
Código bonito:
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;
}
}
}
A maneira como isso funciona é simples. Ele lê a URL http://stackoverflow.com/questions"
para determinar o número de perguntas que têm recompensas (nota: se o número aumentar, o programa falhará, mas se cair, funcionará bem). Ele procura por este número usando a regex: b.>(\\d+)
. Isso funcionou em todos os testes até o momento, mas se alguém fez uma pergunta que corresponda a essa expressão regular, isso pode não funcionar.
Então, abrimos o URL http://stackoverflow.com/questions?pagesize=1&sort=featured&page=
+ current question #
. Em outras palavras, abrimos uma nova página para cada pergunta em destaque e forçamos o número de perguntas a serem apenas 1
, para obter todas elas. A parte da reputação sempre corresponderá ion.>.(\\d+)
, então eu a uso para encontrá-la. Dividi a operação em duas partes, para que eu pudesse verificar de forma barata se o número de perguntas reduziu (ou seja, a sequência retornada não é um número inteiro).
Em seguida, resumimos toda a reputação e a imprimimos.
Demorou cerca de 3 minutos e 20 segundos para rodar na minha máquina.
Alguém sabe por que não está imprimindo o número certo?