Stackoverflow에 얼마나 많은 현상금이 있습니까?


33

태스크:

당신은 훌륭한 프로그래머이자 Stackoverflow-answerer이며 Stackoverflow에 현상금으로 모든 질문에 대답하기로 결정했습니다. 당신은 너무 좋아서 모든 질문에 모든 바운티를 얻을 수 있습니다. 담당자가 범람 할 때까지 기다리는 동안, 모든 바운티에있는 총 담당자 수를 확인하는 프로그램을 작성하십시오.

규칙 :

  • 달릴 때
    • 프로그램이 스택 오버플로의 기능 탭을 탐색합니다.
    • 각 현상금의 가치를 긁어 내고
    • 그런 다음 합산하여 총계를 표시합니다.
  • SO (및 SO 만)의 어느 곳에서나 데이터를 다운로드해야하지만 약 10 페이지이므로 https://stackoverflow.com/questions?pagesize=50&sort=featured 사용하는 것이 좋습니다
  • 이것은 이므로 가장 짧은 코드가 승리합니다.


2
stackoverflow.com/?tab=featured . 1 페이지의 모든 주요 질문.
Nzall

7
@NateKerkhofs 그게 다가 아닙니다. 아래로 스크롤하십시오. 예를 들어 방금로드했을 때 472 개의 질문 중 96 개가 표시되었습니다.
bazzargh


@justhalf는 이미 논의되었습니다 ...
TheDoctor

답변:


23

자바 스크립트- 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)

편집 1 : 일부 선택기 ?:를 자르고 Google의 폐쇄 컴파일러의 제안을 사용했습니다 (@Sirko를 통해-감사합니다)

편집 2 : s내부 d초기화 t0대신 초기화""

편집 3 : 실제로 특정 컨테이너를 대상으로 할 필요가 없으며 전체 문서를 쓸어 넘겨서 많은 .find호출과 불필요한 선택기를 제거 할 수 있음을 알았습니다.

편집 4 : t함수 호출에서 이니셜 라이저를 밀어서 ;(어쨌든 맨 위로 끌어 올릴 것입니다){}

참고 : 부정 행위인지 확실하지 않지만 이미 가리키는 브라우저의 콘솔 창에서 실행해야합니다 http://stackoverflow.com/questions?page=1&sort=featured. 페이지 자체에서 jQuery 및 적절한 페이징 링크를 사용할 수 있다는 사실에 의존 합니다. 또한 IE 또는 Chrome이 아닌 Firefox 에서만 작동하는 것으로 보입니다 .

출력 (게시 시점) :

38150 (in an alert dialog)

폭발 / 설명 :

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-Google Closure Compiler를 사용했습니다.
Sirko

8
필요한 문자를 많이 우회하기 위해 언어와 문맥을 몰래 선택하십시오! ( " stackoverflow.com/" 과 같은) 마음에 듭니다 !
AlexC

jQuery 플러그인을 사용하여 수행되었다고 언급해야한다고 생각합니다. 내가 생각합니다 .. :)
Mr_Green

Chrome에서 구문 오류가 발생합니다. Paren으로 함수 본문을 열면 (실제로 작동합니까?
thejh

@Mr_Green-이미 언급했지만 더 많은 관심을 끌기 위해 굵게 표시했습니다.
Alconja

21

파이썬- 232, 231, 195, 183, 176, 174

정규식을 사용하여 https://stackoverflow.com/questions?sort=featured 에서 HTML을 구문 분석합니다 .

상단의 경계 rangefor루프가 있어야number of pages + 1그렇지 않으면 코드는 올릴 것이다 HTTPError때문에 404의. 페이지 당 기본 결과 수는 15이며 이는 코드에서 사용하는 것입니다 ( ?pagesize=50문자를 생략 하면 효과가 있습니다).

더 많은 문자 수 를 줄이려면 @Gabe 에게 감사드립니다 .

골프 :

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))

출력 (게시 시점) :

37700

언 골프 :

다음은 약간 이해하기 쉬운 다소 골프가없는 버전입니다.

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
명시 적 for루프를 제거 하고 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

하드 코딩 된 상한을
가지면


6
@Richard 그래,하지만 이것은 코드 골프 이기 때문에 간결함은 그것이 "좋은 생각"인지 아닌지에 우선한다. 실생활에서는 공백이없는 끔찍한 1 개의 라이너를 작성하는 것도 좋지 않습니다 ...
Tim Goodman

3
@Richard html을 파싱하고 html에서 추출하는 것은 매우 다른 작업입니다. 웹 사이트가 안정적인 API를하지 않기 때문에, 아무것도됩니다 보장하지 추출 이런 종류의 작업에. Tony의 코드는 약간 오버 골딩되어 있지만 뒤에 숫자가 포함 된 태그 가 있으면 실패합니다 +. 예를 들어 질문 제목이 해당 형식에 맞을 수 있습니다.
코드 InChaos

18

REBOL - 164 133 130 (139 수표 404)

parseRebol 의 하위 언어를 사용하여 HTML을 구문 분석합니다 . 처음 98 페이지를 확인합니다. 파이썬 솔루션과 동일한 제약 조건이 있음을 깨달았습니다. 너무 많은 반복이 404 오류를 치고 실행을 중지했습니다. 많은 개선을 위해 @rgchris에게 감사합니다! 최대 98 페이지를 확인하도록 업데이트되었습니다.

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 (139)에 대한 오류 검사와 함께 :

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

테스트

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

설명

Rebol은 공백을 무시하므로 원하는 경우 한 줄에 모두 넣을 수 있습니다. PARSE는 두 가지 입력을 취하며 첫 번째 인수 ( read join ...) 는 매우 자명합니다. 그러나 더 전통적인 들여 쓰기로 구문 분석법에 대한 의견이 있습니다.

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

니스 ... 나는 약간의 의견과 함께 원본 형식의 버전을 추가했습니다. 걱정하지 않기를 바랍니다! Rebol이 그러한 문맹 퇴치에 대해 많은 문제를 얼마나 잘 해결하는지 항상 보는 것이 좋습니다 (모두 반 플랫폼 크로스 플랫폼 Apache 라이센스 실행 파일에 있지만 REFORM과 같은 것들이 아픈 엄지 손가락처럼 튀어 나옵니다. 다른 모든 비트는 의미가 있지만 여전히 보입니다. 그 단어로 가서 "감소와 형태가 개혁으로 바뀌고있다"는 것은 추악한 일 이다. 그것에 대한 집착은 매우 호손 이다. 아, 그리고 당신은 어떤 것을 다른 것으로 바꾸고 숯을 깎을 수있다! :-)
Dr. Rebmu

죄송합니다. 133이어야합니다.
rgchris

참고 : 더 높은 n값 으로 반복해야합니다. 현재 28 페이지의 현상금이 있습니다 (페이지 크기 15). 그래도 문자 수에 영향을 미치지 않습니다.
Alconja

감사합니다 Alconja. 솔루션에 더 이상 문자를 추가하기 전에 최대 98 페이지까지 쉽게 이동할 수 있습니다. 오늘 밤 집에서 테스트를 다시 실행해야합니다.
johnk

11

루비, 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

스택 교환 API를 사용합니다.

출력 (원본 게시 시점 기준) :

37200

&pagesize=100문자 수를 계산하지 않습니다 . 문자 수없이 작동하지만 테스트 중에 편의를 위해 추가했습니다. 제거하면 더 많은 할당량을 먹고 약간 더 오래 걸리는 것을 제외하고는 동일한 작업을 수행합니다.


니스, 나는 단지 파이썬에서 275까지 얻었습니다
Claudiu

더 많은 할당량을 먹는다 ??? 당신은 SO와 SO만을 사용해야했습니다.
John Dvorak

@JanDvorak ??? API 할당량을 의미했습니다.
Doorknob

1
require의는 교체 할 수 있습니다 -r명령 줄 플래그.
저스틴

8

Rebmu - 108 107

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

테스트 (19:05 AEST)

>> 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 는 다소 까다로워 보이지만 일단 중단되면 읽을 수 있습니다. 그것을 풀고 올바르게 배치하는 것으로 시작합시다.

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는 Rebol의 방언이므로 솔루션의 유사성을 볼 수 있습니다. Rebmu는 아직 모든 문장의 크기를 줄일 수는 없지만 진화하는 언어입니다. 첫 번째 시도의 개선 사항에 대해 @rgchris에게 다시 감사드립니다.


ti(정수로!)는 do코드 길이를 변경하지 않고 Rebmu 보다 안전 합니다.
rgchris

6

루비-197

짧은 버전 :

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

인간 친화적 버전 :

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

그리고 대답- 39700

스크립트 매개 변수가있는 루비-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

bash에서 이것을 실행하려면 다음을 입력하십시오.

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

require의는 교체 할 수 있습니다 -r명령 줄 플래그.
저스틴

6

PHP-121 바이트

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

정규 표현식 'eval'수정자를 사용하여 사용 array_sum하거나 유사한 것을 피하십시오 . 유효한 항목 중에서 가장 짧은 솔루션 인 것 같습니다.


4
e수정은 PHP 5.5로 사용되지 않습니다,하지만 여전히 그럼에도 불구하고 골프에 유용합니다.
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;

모든 페이지를 반복하며 pagesize바이트를 더 많이 저장하도록 설정되어 있지 않습니다 GET.

매우 매우 더럽지 만 ... PHP"결점"을 이용하십시오!

  • 뒤에 공간이 없다 echo
  • while 할당에서 멈춤
  • 출력 후 RegEx교체하는 문자열 특지 량 시작
  • array_sum() 문자열을 더한다
  • $n$s초기화하지만, 무에서 시작하는 당량이다 있습니다. 0에서 시작하여
  • 기타...

5

배쉬 206

너무 게으른 최적화 가능

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

결과:

39450

4
틀릴 수도 있지만 품질 최적화 가 너무 짧을 수 있습니다 .
rickcnagy

seq 1 11로 줄일 수 있습니다 seq 11.
fedorqui

파이프 주위의 공간을 제거하여 4 개의 문자를 절약 할 수 있어야하며,이 두 grep을 하나로 병합 할 수 있습니다 ( "[0-9] +"를 의미 했습니까?).
Desty

또한 "grep -o -E"=> "egrep -o"입니다.
Desty

"egrep -o '[0-9] +'"=> "cut -d ''-f3":)
Desty

5

자바 스크립트- 129 119 110 107 자

편집 : 잘못된 답변! 이것은 "인기있는 질문들"만을 처리하며, 그중 일부만 있습니다. Alconja의 답변이 더 유효합니다.

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

콘솔 창 에서 https://stackoverflow.com/?tab=featured 에서 실행 하십시오 . Alconja의 솔루션을 기반으로합니다.

불필요한 공백을 제거하여 조금 더 골프를 쳤다.

eval을 사용하여 함수 호출을 제거하고 다른 9자를 지 웁니다.

불필요한 공백을 제거했습니다.


3

자바, 540 자

경고 : 활성 바운티 수는 ~ 470입니다. 이 코드는 stackoverflow의 페이지에 여러 번 액세스합니다. 너무 많은 데이터 요청으로 인해 문제가 발생할 수 있습니다.

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이지만 @TonyH의 코드를 실행하면 37550. 나쁜 소식.

예쁜 코드 :

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

이것이 작동하는 방식은 간단합니다. URL에서 읽은 http://stackoverflow.com/questions"바운티가있는 질문 수를 판별합니다 (참고 : 숫자가 증가하면 프로그램이 실패하지만 실패하면 제대로 작동 함). 정규식을 사용하여이 번호를 검색합니다 b.>(\\d+). 이것은 현재까지 모든 테스트에서 효과가 있었지만 누군가 정규식과 일치하는 질문을하면 작동하지 않을 수 있습니다.

그런 다음 url http://stackoverflow.com/questions?pagesize=1&sort=featured&page=+를 엽니 다 current question #. 다시 말해, 각 주요 질문에 대한 새 페이지를 열고 질문 수를 강제로 설정하여 1모든 질문을 얻을 수 있습니다. 평판 부분은 항상 일치 ion.>.(\\d+)하므로 찾을 때 사용합니다. 나는 질문의 수가 줄어든 것인지 (즉, 반환 된 문자열이 정수가 아님) 저렴하게 확인할 수 있도록 작업을 두 부분으로 나눕니다.

그런 다음 모든 평판을 요약하고 인쇄합니다.

내 컴퓨터에서 실행하는 데 약 3 분 20 초가 걸렸습니다.


올바른 번호를 인쇄하지 않는 이유를 아는 사람이 있습니까?


pagesize = 100은 많은 수를 제공합니다. pagesize = 1을 전달했기 때문에 이상한 일이 발생한다고 생각합니다. 내 대답에 'pagesize'를 지정하지 않으면 결과가 귀하의 숫자와 비슷했습니다.
jzm

@malik 그래, 나는 당신의 의견을 "잘못 읽었다"는 것을 깨달았습니다. pagesize = 100은 pagesize = 50처럼 작동합니다. pagesize = 100으로 내 코드를 실행 했습니까?
저스틴

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 사용 Gzip 압축 해제 및 다른 정규 표현식을 제외하고는 아래와 동일합니다.

테스트

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

이상하게도 아래와 다른 값을 얻습니다.


C #-496

이것은 gzipped 및 json 인 api.stackexchange를 사용합니다.

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

미완성 :

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

테스트

기본 페이지 크기 :

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

페이지 크기 = 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)

스택 교환 (및 많은 다른 사이트)의 어느 곳에서나 작동하며 @ Alconja / @ NateKerkhofs 답변과 같이 특정 페이지에있을 필요는 없습니다.


jQuery는 언어가 아닌 라이브러리입니다. 그것이 유효한지 아닌지 확실하지 않습니다 ...
rickcnagy

@ br1ckb0t 원한다면 자바 스크립트로 가져 가십시오. jQuery를 내가 단지에 대한 명시되는 한, 어쨌든 stackexchange 사이트에 이미$
Einacio

그렇습니다. 좋은 코드입니다.
rickcnagy

2

PHP-139

골프 :

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

언 골프-147

단순 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]);

테스트:

php run.php

10250


2

배쉬 174

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&하고 더 많이 루프 할 수 있습니다 (15면 기본 페이지 크기라고 생각합니다).
Alconja

@Alconja Hmm, 맞습니다. 그래서 이것을 162로 줄일 수 있었지만 서버에 대한 더 많은 요청 스팸의 단점이 있습니다.
thejh

2

파이썬 (174 자) :

위의 파이썬 답변 확장 (댓글을 작성할 충분한 업장이 없음) :

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 대신 요청은 2자를 줄입니다.


1

루비 (176 자) :

하드 코딩 된 페이지 번호를 사용하는 Tony H.의 예를 따르면 다음과 같습니다.

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

글을 쓰는 시점에 35300을 주었다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.