Stackoverflow'ta ödül ne kadar?


33

Görev:

Müthiş bir programcı ve Stackoverflow-cevaplayıcısınız ve Stackoverflow'taki her soruyu lütufla cevaplamaya karar verdiniz. O kadar iyisin ki, tüm sorularda tüm ödülleri kazanmayı başardın. Temsilcinin su yüzüne gelmesini beklerken, devam eden ve toplam rep miktarının tüm bu ödüllerde ne olduğunu öğrenen bir program yazıyorsunuz.

Kurallar:

  • Koşarken
    • Programınız Yığın Taşması üzerindeki özellikli sekmede gezinecektir.
    • Her ödülün değerini sıyırır,
    • Sonra onu ekler ve toplamı görüntüler
  • SO'daki herhangi bir yerden veri indirmek zorundadır (ve yalnızca SO), ancak yalnızca 10 sayfa olduğu için https://stackoverflow.com/questions?pagesize=50&sort=featured özelliğini kullanmanızı tavsiye ederim.
  • Bu , yani en kısa kod kazanır.


2
stackoverflow.com/?tab=featured . Tüm özellikli sorular 1 sayfada.
Nzall

7
@NateKerkhofs hepsi bu değil. Aşağıya doğru kaydırın. Örneğin, az önce yüklediğimde, 472 sorudan 96'sı gösteriliyordu.
bazzargh


@justhalf zaten ... tartışılmıştır
TheDoctor

Yanıtlar:


23

JavaScript - 176 133 130 108 106

function f()(t+=$("[title~=an]").text(),u=$("[rel*=x]")[0])?$("html").load(u.href,f):alert(eval(t));f(t=0)

Düzenleme 1: bazı seçicileri ?:küçültdü ve öneriyi Google Kapanış Derleyicisinden kullandı (@Sirko aracılığıyla - teşekkürler)

Düzenleme 2: siçeriyi dbaşlat tve 0yerine başlat""

Düzenleme 3: farkına varma, aslında belirli bir konteyneri hedeflememe gerek kalmadı ve bir sürü .findçağrıdan ve gereksiz bir seçiciden (artı onu tutan değişkenden) kurtulan tüm belgeyi tarayabilirim

Düzenleme 4: tişlev çağrısında başlatıcıyı bir ;( önlemek için yine üst üste kaldırılacak) önlemek için fonksiyona getirin ve işlevi bir ifadeye indirgeyin (iki ifadeyi üç ifadenin koşul içindeki bir ifadeyle birleştirin){}

Not : Hile yapıp yapmadığından emin değilim, ancak bu zaten işaret eden bir tarayıcının konsol penceresinden çalıştırılmalıdır http://stackoverflow.com/questions?page=1&sort=featured. JQuery ve uygun sayfalama bağlantılarının sayfanın kendisinde bulunmasına dayanır . Ayrıca, yalnızca Firefox'ta çalışıyor , IE veya Chrome'da çalışmıyor.

Çıktı (gönderim sırasında):

38150 (in an alert dialog)

Patladı / yorum yaptı :

function f()
    //concat all the bounty labels to t (they take the format "+50")
    //happens to be elements with title attribute containing word 'an'
    (t+=$("[title~=an]").text(),
    //find the "next" (has rel=next attribute) button
    u = $("[rel*=x]")[0])       
        ?
        //if there is a next button, load it, and then recurse f again
        $("html").load(u.href,f)
        :
        //else eval the 0+a+b+...+z tally and alert the result
        alert(eval(t))
//kick off the initial scrape (and simultaneously init the total tally)
f(t=0)

s=" #mainbar";d=$(s);t="";function a(){d.find(".bounty-indicator").each(function(){t+=this.innerHTML});(u=d.find("[rel=next]")[0])?d.load(u.href+s,a):alert(eval(t))}a();169 - kullanılan Google Closure Compiler.
Sirko

8
Gerekli karakterlerin çoğunu atlamak için dil ve bağlamın sinsi seçimi! (Örneğin " stackoverflow.com" gibi) Beğendim!
AlexC

Bence jQuery eklentisi kullanılarak yapıldığını söylemelisin. hangi olması gerektiğini düşünüyorum .. :)
Mr_Green

Chrome bir sözdizimi hatası veriyor. Bir fonksiyon gövdesini (paren ile açmak gerçekten işe yarıyor mu?
thejh

@Mr_Green - Ben zaten bunu not aldım, ama daha fazla dikkat çekmek için onu
cesaretlendirdim

21

Python - 232, 231, 195, 183, 176, 174

Düzenli ifadeler kullanarak HTML'yi https://stackoverflow.com/questions?sort=featured adresinden ayrıştırır .

Üst sınırı rangeiçinde fordöngü gerekir olmak number of pages + 1ya da başka kod yükseltecektir HTTPErrorçünkü 404'ler arasında. Sayfa başına varsayılan sonuç sayısı 15'tir, bu kodun kullandığı şeydir ( ?pagesize=50karakterlerden tasarruf eder ve bu kadar etkilidir).

Char sayısını azaltan bahşiş için @ Gabe sayesinde daha da fazla.

Golf :

import requests,re;print sum(sum(map(int,re.findall(r"<.*>\+(\d+)<.*>",requests.get("https://stackoverflow.com/questions?sort=featured&page=%u"%i).text)))for i in range(1,33))

Çıktı (gönderim sırasında):

37700

Golfsüz :

İşte okuması ve anlaması biraz daha kolay olması gereken biraz golf oynamış bir versiyon.

import requests, re

print sum(
          sum(
              map( int,
                   re.findall( r"<.*>\+(\d+)<.*>",
                               requests.get( "https://stackoverflow.com/questions?sort=featured&page=%u" % i).text
                   )
              )
          ) for i in range( 1, 33 )
      )

1
Açık fordöngüden kurtulabilir ve onu 176:import urllib,re;print sum(sum(map(int,re.findall(r"<.*>\+(\d+)<.*>",urllib.urlopen("http://stackoverflow.com/questions?sort=featured&page=%u"%i).read())))for i in range(1,33))
Gabe

kodlanmış bir üst sınırın olması testin biraz zorlaşmasını sağlar
Einacio


6
@Richard Evet, ama bu kod golf , bu yüzden kısalık "iyi bir fikir" olup olmadığına değiniyor . Demek istediğim, Gerçek Hayatta, aynı zamanda beyaz boşluk bırakmayan korkunç bir gömlek yazmak da iyi bir fikir değil ...
Tim Goodman

3
@Richard Html ayrıştırma ve html ayıklamak oldukça farklı görevlerdir. Bir web sitesi kararlı bir API olmadığından, bu tür bir çıkartma için hiçbir şey garanti edilmez . Tony'nin kod biraz overgolfed olsa varsa, başarısız olur, böylece herhangi bir içeren etiket +bir sayı ile takip etti. Örneğin, bir soru başlığı bu formata uyabilir.
CodesInChaos

18

Rebol - 164 133 130 (139, 404 çek ile)

parseRebol'un alt dilini kullanarak html'yi ayrıştırır . İlk 98 sayfayı kontrol eder. Python çözümü ile aynı kısıtlamaya sahip olduğumu farkettim - çok fazla tekrar 404 hataya çarptı ve yürütmeyi durdurdu. @Rgchris'e birçok iyileştirme için teşekkürler! 98 sayfaya kadar kontrol etmek için güncellendi.

s: 0 repeat n 99[parse read join http://stackoverflow.com/questions?sort=featured&page= n[15[thru{>+}copy x to{<}(s: s + do x)]]]s

404'ler (139) için hata kontrolü ile:

s: 0 repeat n 99[attempt[parse read join http://stackoverflow.com/questions?sort=featured&page= n[15[thru{>+}copy x to{<}(s: s + do x)]]]]s

Ölçek

>> s: 0 repeat n 20[parse read join http://stackoverflow.com/questions?sort=featured&page= n[15[thru{>+}copy x to{<}(s: s + do x)]]]s
== 23600

>> s: 0 repeat n 99[attempt[parse read join http://stackoverflow.com/questions?sort=featured&page= n[15[thru{>+}copy x to{<}(s: s + do x)]]]]s
Script: none Version: none Date: none
== 36050

açıklama

Rebol boşlukları görmezden geliyor, dolayısıyla eğer istersen hepsini tek bir satıra koyabilirsin. PARSE iki girdi alır ve ilk argüman ( read join ...) oldukça açıklayıcıdır. Ancak, ayrıştırma lehçesi talimatlarıyla ilgili daha geleneksel bir girintiyle ilgili bazı yorumlar:

s: 0
repeat n 99 [
    parse read join http://stackoverflow.com/questions?sort=featured&page= n [
        ;-- match the enclosed pattern 15 times (the rule will fail politely when there are less entries)
        15 [
            ;-- seek the match position up THRU (and including) the string >+
            thru {>+}
            ;-- copy contents at the current position up TO (but not including) <
            copy x to {<}
            ;-- (Basically, run some non-dialected Rebol if this match point is reached) the do is a bit dangerous as it runs the string as code
            (s: s + do x)
        ]
    ]
]
;-- evaluator returns last value, we want the value in S
;-- (not the result of PARSE, that's a boolean on whether the end of input was reached)
s

Güzel ... Bazı yorumlar ile bir oridinary formatlı sürümünü ekledi, umursamıyorum! Rebol'un böyle bir okuryazarlıkla ilgili bu kadar çok sorunu nasıl çivi çektiğini görmek her zaman harikadır (hepsi yarım megapiksel çapraz platformlu Apache lisanslı bir çalıştırılabilir dosyadadır, ancak REFORM gibi şeyler ağrılı bir parmak gibi yapışır) Her şey biraz mantıklı ama ben hala bakıyorum Bu kelime ve git "REduce ve FORM REFORM dönüşüyor" sadece çirkin . Bunu gözlemek çok Hawthorne olduğunu . Oh, ve BAZI HERHANGİ değişebilir ve bir char tıraş olabilir! :-)
Dr. Rebmu

Maalesef 133 olmalı.
rgchris

Not: Daha yüksek bir ndeğere geçmeniz gerekir ... şu anda 28 sayfa ödül vardır (sayfa 15 için). Yine de char sayınızı etkilemeyecek.
Alconja

Teşekkürler Alconja. Çözüme daha fazla karakter eklemeden önce 98 sayfaya kadar kolay. Testi bu gece evden tekrar çalıştırmak zorunda kalacağım
johnk

11

Ruby, 260

require'open-uri'
require'zlib'
i=b=0
d=''
until /"has_more":f/=~d
i+=1
d=Zlib::GzipReader.new(open("http://api.stackexchange.com/2.2/questions/featured?site=stackoverflow&page=#{i}&pagesize=100")).read
b+=d.scan(/"bounty_amount":(\d+)/).map{|x|x[0].to_i}.reduce :+
end
p b

Stack Exchange API'sini kullanır.

Çıktı (orijinal gönderim zamanı itibariyle):

37200

Ben saymam &pagesize=100onsuz çalıştığı için, karakter sayısına, ama sadece kolaylık test ederken belirtti. Bunu kaldırırsanız, aynı şeyi yapar (daha fazla kota yer ve biraz daha uzun sürer hariç).


Güzel, sadece Python'da
Claudiu

daha fazla kota yiyor ??? Sadece SO ve SO'ları kullanman gerekiyordu.
John Dvorak

@JanDvorak ??? API kotasını kastetmiştim.
Kapı kolu

1
requireS ile değiştirilebilir -rkomut satırı bayrağıyla.
Justin,

8

Rebmu - 108 107

rtN99[parseRDrj[http://stackoverflow.com/questions?sort=featured&page=N][15[thru{>+}copyXto{<}(a+JdoX)]]]j

Test (19:05 AEST'de)

>> rebmu [rtN99[parseRDrj[http://stackoverflow.com/questions?sort=featured&page=N][15[thru{>+}copyXto{<}(a+JdoX)]]]j]
Script: none Version: none Date: none
== 79200

Rebmu oldukça şifreli görünüyor, ancak onu bir kez aldığınızda oldukça okunabilir. Açmadan ve düzgün bir şekilde yerleştirerek başlayalım.

rt n 99 [
    parse rd rj [
        http://stackoverflow.com/questions?sort=featured&page= n
    ][
        15 [
            thru {>+}
            copy x to {<}
            (a+ j do x)
        ]
    ]
]
j

Rebmu bir Rebol lehçesidir, böylece çözümdeki benzerlikleri görebilirsiniz. Rebmu, henüz her ifadenin boyutunu küçültemez, ancak gelişen bir dildir. İlk teşebbüsümdeki gelişmelerden dolayı @rgchris'e tekrar teşekkür ederim.


ti(tamsayıya!) dokod uzunluğu değişmeden Rebmu'dan daha güvenlidir .
rgchris

6

Yakut - 197

Kısa versiyon:

require 'nokogiri'
require 'open-uri'
s=0
(1..33).each{|p|Nokogiri::HTML(open("http://stackoverflow.com/questions?page=#{p}&sort=featured")).css('.bounty-indicator').each{|b|s+=b.content.to_i}}
p s

İnsan dostu versiyon:

require 'nokogiri'
require 'open-uri'
s=0
(1..33).each do |p|
    Nokogiri::HTML(open("http://stackoverflow.com/questions?page=#{p}&sort=featured")).css('.bounty-indicator').each do |b|
        s += b.content.to_i
    end
end
puts s

Ve cevap - 39700

Kod parametreli Ruby - 139

require 'nokogiri'
require 'open-uri'
s=0
(1..33).each{|p|Nokogiri::HTML(open(ARGV[0]+p.to_s)).css(ARGV[1]).each{|b|s+=b.content.to_i}}
p s

Bunu bash'dan çalıştırmak için sadece yazın

ruby code_golf_stack_overflow2.rb http://stackoverflow.com/questions?sort=featured\&page= .bounty-indicator

requireS ile değiştirilebilir -rkomut satırı bayrağıyla.
Justin,

6

PHP - 121 bayt

<?for(;preg_filter('/>\+(\d+)/e','$t+=\1',@file('http://stackoverflow.com/questions?sort=featured&page='.++$n)););echo$t;

Bir regex 'eval' değiştiricisini kullanmak, kullanmaktan array_sumveya benzeri bir şeyden kaçınmak için . Geçerli girdiler arasında en kısa çözüm gibi görünüyor.


4
edeğiştirici PHP 5.5 itibariyle kullanımdan kaldırıldı, ama yine de her şeye rağmen golf için yararlıdır.
Fabrício Matté

6

PHP, 134 , 131 , 127

while($q=array_sum(preg_filter('#.*>\+#',0,file("http://stackoverflow.com/questions?sort=featured&page=".++$n))))$s+=$q;echo$s;

Döngü Will tüm sayfalarda, pagesizebu nedenle daha fazla bayt kaydetmek için ayarlı değilGET .

Çok Çok Kirli, fakat ... PHP'' kusurlardan '' faydalanarak !

  • sonra boşluk yok echo
  • while görevde durur
  • RegExdeğiştirme işleminden sonra çıktı , lütuf miktarıyla başlayan bir dizedir.
  • array_sum() dizeleri ekler
  • $nve $sbaşlatıldı, ancak hiçbir şeyden başlamak eşittir. sıfırdan başlayarak
  • vb...

5

Bash 206

optimizasyonlar mümkün, çok tembel

s=0;for i in `seq 1 11`;do for j in `wget -q -O - "http://stackoverflow.com/questions?pagesize=50&sort=featured&page=$i" | grep -o -E "bounty worth [0-9]*" | grep -o -E "[0-9]*"`;do s=$(($s+$j));done;done;echo $s

sonuç:

39450

4
Yanılıyor olabilirim, ancak bu , bazı kalite optimizasyonlarında çok kısa olabilir gibi görünüyor .
rickcnagy

seq 1 11azaltılabilir seq 11.
fedorqui

Dört karakterden tasarruf etmek için boruların etrafındaki boşluklardan kurtulabilmelisiniz ve kesinlikle bu iki ızgara birle birleştirilebilir ("[0-9] +" mı demek istediniz?).
14'te

Ayrıca "grep -o -E" => "egrep -o".
destY

Ve değiştirebilirsiniz: "egrep -o '[0-9] +'" => "cut -d '' -f3" :)
14:32

5

Javascript - 129 119 110 107 karakter

EDIT: GEÇERSİZ CEVAP! Bu sadece, sadece bir kısmı olan "En çok öne çıkan sorular" ı ele alır. Alconja'nın cevabı daha geçerlidir.

s="#mainbar";t="";eval("$(s).find('.bounty-indicator').each(function(){t+=this.innerHTML});alert(eval(t))")

Konsol penceresinde https://stackoverflow.com/?tab=featured komutunu çalıştırın . Alconja'nın çözümüne dayanıyor.

Gereksiz beyaz boşlukları kaldırarak biraz daha golf oynadı.

İşlev çağrısını kaldırmak için eval kullanıldı, 9 karakter daha silindi.

biraz daha gereksiz boşlukları temizledi.


3

Java, 540 karakter

Uyarı: aktif ödüllerin sayısı ~ 470. Bu kod, yığın akışı üzerindeki bir sayfaya birçok kez erişecektir. Çok fazla veri talebi yaptığınız için başınızı belaya sokabilir.

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;}}}

23400Çıktım şuydu , ama @ TonyH'in kodunu çalıştırdığımda anladım 37550. Kötü haber.

Güzel kod:

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;
        }
    }
}

Bunun işe yaraması basit. http://stackoverflow.com/questions"Ödül alan soru sayısını belirlemek için URL'den okur (not: eğer sayı artarsa, program başarısız olur, ancak düşerse iyi çalışır). Bu regex kullanarak bu numara için arama yapar: b.>(\\d+). Bu, bugüne kadar yapılan tüm testlerde işe yaradı, ancak birileri bu regex ile eşleşen bir soru sorsa, bu işe yaramayabilir.

Sonra url http://stackoverflow.com/questions?pagesize=1&sort=featured&page=+ ' yı açarız current question #. Başka bir deyişle, öne çıkan her soru için yeni bir sayfa açıyoruz ve soru sayısını yalnızca olmaya 1zorluyoruz, böylece hepsini alacağız. Ün kısmı daima eşleşecekion.>.(\\d+) , bu yüzden onu bulmak için kullanırım. İşlemi iki parçaya böldüm, böylece soru sayısının azalıp azaltmadığını ucuz bir şekilde kontrol edebildim (yani, döndürülen dize bir tamsayı değil).

Ardından, bütün itibarı toplar ve yazdırırız.

Makinemde çalışması yaklaşık 3 dakika 20 saniye sürdü.


Neden doğru numarayı yazdırmadığını bilen var mı?


pagesize = 100 büyük sayıyı verir. Bence garip bir şeyler oluyor çünkü sayfalardan geçiyorsunuz = 1. Cevabımda, 'sayfa boyutu' belirtmediyseniz, sonuç numaranıza yakındı.
jzm

@malik Evet Yorumunuzu "yanlış" yazdığımı farkettim, ben de benimkileri sildim :-). pagesize = 100, pagesize = 50 gibi davranır. Kodumu pagesize = 100 ile koştuğunu mu demek istedin?
Justin

2

C # - 407

class B{void Main(string[] a){var o=0;for(int i=1;i<11;i++){var r=((System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(new Uri(string.Format(a[0]+"&page={0}",i)))).GetResponse();if(r.ContentLength>0){using(var s=new StreamReader(r.GetResponseStream()))foreach(Match m in Regex.Matches(s.ReadToEnd(),"bounty worth (.+?) "))o+=int.Parse(m.Value.Substring(m.Value.IndexOf('h')+2));}}Console.Write(o);}}

Stackoverflow.com'u kullanma. Gzip sıkıştırması açma ve farklı regex hariç, aşağıdakilerle aynı.

Ölçek

> prog.exe http://stackoverflow.com/questions?pagesize=50&sort=featured
38150

Tuhaf bir şekilde, aşağıdakinden farklı bir değer elde etmek.


C # - 496

Bu, gzipped ve json olan api.stackexchange'i kullanır.

using System.IO.Compression;class B{void Main(string[] a){var o=0;for(int i=1;i<11;i++){var r=((System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(new Uri(string.Format(a[0]+"&page={0}",i)))).GetResponse();if(r.ContentLength>0)using(var s=new StreamReader(new GZipStream(r.GetResponseStream(),CompressionMode.Decompress)))foreach(Match m in Regex.Matches(s.ReadToEnd(),@"bounty_amount"":(.+?),"))o+=int.Parse(m.Value.Substring(m.Value.IndexOf(':')+1).Replace(",",""));}Console.Write(o);}}

Unminified:

using System.IO.Compression;

class B
{
    void Main(string[] a)
    {
        var o = 0;
        for (int i=1; i<11; i++) {
            var w = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(new Uri(string.Format(a[0]+"&page={0}",i)));
            if(w.GetResponse().ContentLength > 0)
                using(var s = new StreamReader(new GZipStream(w.GetResponse().GetResponseStream(),CompressionMode.Decompress)))
                    foreach(Match m in Regex.Matches(s.ReadToEnd(), @"bounty_amount"":(.+?),"))
                        o += int.Parse(m.Value.Substring(m.Value.IndexOf(':')+1).Replace(",", ""));
        }
        Console.Write(o);
    }
}

Ölçek

Varsayılan sayfa boyutu:

> prog.exe http://api.stackexchange.com/2.2/questions/featured?site=stackoverflow
25300

PageSize = 100:

> prog.exe "http://api.stackexchange.com/2.2/questions/featured?site=stackoverflow&pagesize=100"
37400

2

jQuery 191

i=0;function f(p){$.get('//api.stackexchange.com/2.2/questions/featured?site=stackoverflow&page='+p,function(d){for(x in d.items)i+=d.items[x].bounty_amount;d.has_more?f(p+1):alert(i)})};f(1)

Stackexchange'in herhangi bir yerinden (ve diğer birçok siteden) çalışır, @ Alconja / @ NateKerkhofs cevaplarında olduğu gibi belirli bir sayfada olmasına gerek yoktur


jQuery bir kütüphanedir, bir dil değildir. Geçerli olup olmadığından emin değilim ...
rickcnagy

@ br1ckb0t eğer istersen javascript olarak kabul et. jQuery zaten zaten $
stackexchange

Evet, bu mantıklı! Güzel kod.
rickcnagy

2

PHP - 139

golfed:

<?php
$a=file_get_contents('http://stackoverflow.com/?tab=featured');preg_match_all('/n">\+([0-9]+)<\/div>/',$a,$r);echo array_sum($r[1]);

Ungolfed - 147

Basit file_get_contents/ preg_match/array_sum

<?php
$a = file_get_contents('http://stackoverflow.com/?tab=featured');
preg_match_all('/n">\+([0-9]+)<\/div>/', $a, $r);
echo array_sum($r[1]);

Ölçek:

php run.php

10250


2

Bash 174

Dayanarak https://codegolf.stackexchange.com/a/25180/7664 :

s=0;for i in {1..11};do for j in `wget -qO- "stackoverflow.com/questions?pagesize=50&sort=featured&page=$i"|cut -d' ' -f18|egrep '^[0-9]+$'`;do s=$(($s+$j));done;done;echo $s

pagesize=50&Ve sadece daha fazla döngü kurtulun ( 15 ise varsayılan sayfa boyutunu düşünüyorum).
Alconja

@Alconja Hmm, doğru, bu yüzden bunu 162'ye indirebilirim ... ama sadece sunucuya daha fazla spam göndermem için.
thejh

2

Python (174 karakter):

Yukarıdaki python cevabını genişleterek (yorum yapacak kadar karma yok):

import requests,re;print sum(sum(map(int,re.findall(r"<.*>\+(\d+)<.*>",requests.get("http://stackoverflow.com/questions?sort=featured&page=%u"%i).text)))for i in range(1,33))

Urllib yerine talepler 2 karaktere indirdi.


1

Yakut (176 karakter):

Tony H.'nin kodlanmış sayfa numaralarını kullanma örneğini takip ederek, işte aldığım şey:

require'open-uri';b=0;(1..29).each{|i|d=open("http://stackoverflow.com/questions?sort=featured&page=#{i}").read;b+=d.scan(/<.*>\+(\d+)<.*>/).map{|x|x[0].to_i}.reduce 0,:+};p b

yazarken bana 35300 verdi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.