Java, 540 caractères
Attention: le nombre de primes actives est de ~ 470. Ce code accédera à une page sur stackoverflow autant de fois. Vous pourriez avoir des problèmes avec eux pour faire autant de demandes de données.
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;}}}
Ma sortie était 23400
, mais quand j'ai lancé le code de @ TonyH, je l'ai eu 37550
. Mauvaises nouvelles.
Joli 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;
}
}
}
La façon dont cela fonctionne est simple. Il lit à partir de l'URL http://stackoverflow.com/questions"
pour déterminer le nombre de questions comportant des primes (remarque: si le nombre augmente, le programme échoue, mais s'il tombe, il fonctionne correctement). Il recherche ce numéro en utilisant l'expression rationnelle: b.>(\\d+)
. Cela a fonctionné dans tous les tests à ce jour, mais si quelqu'un posait une question qui correspond à cette expression régulière, cela pourrait ne pas fonctionner.
Ensuite, nous ouvrons l’URL http://stackoverflow.com/questions?pagesize=1&sort=featured&page=
+ current question #
. En d'autres termes, nous ouvrons une nouvelle page pour chaque question sélectionnée et forçons le nombre de questions à être uniquement 1
, nous les aurons toutes. La partie réputation correspondra toujours ion.>.(\\d+)
, alors je l'utilise pour la trouver. Je divisai l'opération en deux parties afin de pouvoir vérifier à moindre coût si le nombre de questions était réduit (c'est-à-dire que la chaîne renvoyée n'était pas un entier).
Ensuite, nous résumons toute la réputation et l’imprimons.
Cela a pris environ 3 minutes et 20 secondes pour fonctionner sur ma machine.
Est-ce que quelqu'un sait pourquoi il n'imprime pas le bon nombre?