Có bao nhiêu tiền thưởng trên Stackoverflow?


33

Bài tập:

Bạn là một lập trình viên tuyệt vời và người trả lời Stackoverflow, và bạn quyết định trả lời mọi câu hỏi bằng tiền thưởng trên Stackoverflow. Bạn rất giỏi, đến nỗi bạn có thể nhận được tất cả tiền thưởng trong tất cả các câu hỏi. Trong khi bạn chờ đợi đại diện tràn vào, bạn viết một chương trình đi và tìm hiểu tổng số tiền đại diện trong tất cả các tiền thưởng đó.

Quy tắc:

  • Khi chạy,
    • Chương trình của bạn sẽ điều hướng thông qua tab nổi bật trên Stack Overflow.
    • Nó sẽ loại bỏ giá trị của mỗi tiền thưởng,
    • Sau đó, nó sẽ thêm nó lên và hiển thị tổng số
  • Nó phải tải xuống dữ liệu từ bất cứ nơi nào trên SO (và chỉ SO), nhưng tôi khuyên bạn nên sử dụng https://stackoverflow.com/questions?pagesize=50&sort=featured , vì nó chỉ có khoảng 10 trang
  • Đây là , vì vậy đoạn mã ngắn nhất sẽ thắng


2
stackoverflow.com/?tab=featured . Tất cả các câu hỏi nổi bật trên 1 trang.
Nzall

7
@NateKerkhofs đó không phải là tất cả. Cuộn xuống phía dưới. ví dụ: khi tôi vừa tải nó, nó đã hiển thị 96 trên 472 câu hỏi.
bazzargh


@justhalf đã được thảo luận ...
TheDoctor

Câu trả lời:


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)

Chỉnh sửa 1: cắt bớt một số bộ chọn và sử dụng ?:đề xuất từ ​​Trình biên dịch đóng cửa của Google (thông qua @Sirko - cảm ơn)

Chỉnh sửa 2: khởi sbên dvà khởi tnhư 0thay vì""

Chỉnh sửa 3: nhận ra tôi thực sự không cần phải nhắm mục tiêu vào một thùng chứa cụ thể và có thể quét toàn bộ tài liệu, loại bỏ một loạt các .findcuộc gọi và bộ chọn không cần thiết (cộng với biến giữ nó)

Chỉnh sửa 4: đẩy trình tkhởi tạo trong lệnh gọi hàm để tránh một ;(dù sao nó cũng sẽ được kéo lên trên cùng) và nén hàm xuống một câu lệnh (kết hợp hai câu lệnh thành một câu trong điều kiện câu lệnh ternary) để thả câu lệnh{}

Lưu ý : Tôi không chắc liệu nó có gian lận hay không, nhưng điều này phải được chạy từ cửa sổ giao diện điều khiển của trình duyệt đã trỏ tới http://stackoverflow.com/questions?page=1&sort=featured. Nó dựa vào thực tế là jQuery và các liên kết phân trang thích hợp có sẵn trên chính trang đó. Ngoài ra, nó chỉ xuất hiện để hoạt động trong Firefox chứ không phải trong IE hoặc Chrome.

Đầu ra (tại thời điểm đăng):

38150 (in an alert dialog)

Phát nổ / bình luận :

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 - Trình biên dịch đóng Google đã sử dụng.
Sirko

8
Lén lút lựa chọn ngôn ngữ và bối cảnh để bỏ qua rất nhiều nhân vật cần thiết! (Chẳng hạn như " stackoverflow.com/" ) Tôi thích nó!
AlexC

Tôi nghĩ bạn nên đề cập rằng nó được thực hiện bằng cách sử dụng plugin jQuery. mà tôi nghĩ nó nên là .. :)
Mr_Green

Chrome ném lỗi cú pháp. Mở một cơ thể chức năng với một (paren, điều đó thực sự hoạt động?
thejh

@Mr_Green - Tôi đã lưu ý điều đó, nhưng tôi đã nhấn mạnh nó để thu hút sự chú ý hơn ...
Alconja

21

Con trăn - 232, 231, 195, 183, 176, 174

Phân tích HTML từ https://stackoverflow.com/questions?sort=featured bằng các biểu thức thông thường.

Phía trên ràng buộc của rangetrong forvòng lặp phải được number of pages + 1hoặc nếu không mã sẽ tăng HTTPErrorvì 404s. Số lượng kết quả mặc định trên mỗi trang là 15, đây là những gì mã sử dụng (bỏ qua ?pagesize=50lưu vào các ký tự và có hiệu quả tương đương).

Cảm ơn @Gabe về mẹo giảm số lượng char hơn nữa.

Golfed :

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

Đầu ra (tại thời điểm đăng):

37700

Chưa chơi gôn :

Đây là một phiên bản không được chơi gôn nên dễ đọc và dễ hiểu hơn một chút.

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
Bạn có thể thoát khỏi forvòng lặp rõ ràng và giảm xuống còn 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

có giới hạn trên được mã hóa cứng khiến việc kiểm tra hơi khó khăn
Einacio


6
@Richard Vâng, nhưng đây là mã golf , vì vậy, vấp ngã cho dù đó là một "ý tưởng tốt". Ý tôi là, trong cuộc sống thực, việc viết một lớp lót khủng khiếp không có khoảng trắng cũng không phải là ý hay ...
Tim Goodman

3
@Richard Phân tích cú pháp html và trích xuất từ ​​html là những nhiệm vụ khá khác nhau. Vì một trang web không phải là API ổn định, không có gì được đảm bảo để hoạt động cho loại trích xuất này. Mặc dù mã của Tony hơi quá mức, nhưng nó sẽ thất bại nếu có bất kỳ thẻ nào có chứa một số +theo sau. Ví dụ, một tiêu đề câu hỏi có thể phù hợp với định dạng đó.
CodeInChaos

18

Rebol - 164 133 130 (139 với kiểm tra 404)

Phân tích cú pháp html bằng parsengôn ngữ phụ của Rebol. Kiểm tra 98 trang đầu tiên. Tôi nhận ra rằng tôi có cùng một ràng buộc với giải pháp python - quá nhiều lần lặp lại gặp lỗi 404 và dừng thực thi. Cảm ơn @rgchris vì nhiều cải tiến! Cập nhật để kiểm tra lên tới 98 trang.

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

Với việc kiểm tra lỗi cho 404s (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

Kiểm tra

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

Giải trình

Rebol bỏ qua khoảng trắng, do đó bạn có thể đặt tất cả trên một dòng như thế nếu bạn chọn. PARSE có hai đầu vào và đối số đầu tiên ( read join ...) khá tự giải thích. Nhưng đây là một số ý kiến ​​về các hướng dẫn phương ngữ phân tích cú pháp, theo cách thụt lề truyền thống hơn:

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

Rất vui ... Tôi đã thêm một phiên bản định dạng oridinary với một số ý kiến, hy vọng bạn không phiền! Thật tuyệt vời khi thấy Rebol giải quyết được rất nhiều vấn đề với việc biết chữ như vậy (tất cả trong một nền tảng thực thi được cấp phép bởi Apache nửa nền tảng nhưng điều đó làm cho những thứ như REFORM trở nên giống như ngón tay cái. Mọi thứ khác đều có ý nghĩa tại từ đó và đi "giảm và MẪU bị biến thành CẢI CÁCH" chỉ là xấu xí ám ảnh trên nó là rất dễ. Hawthorne Oh, và bạn có thể thay đổi một số bất kỳ và cạo ra một char :-).!
Tiến sĩ Rebmu

Rất tiếc, phải là 133.
rgchris

Lưu ý: Bạn cần lặp lại ngiá trị cao hơn ... hiện có 28 trang tiền thưởng (đối với kích thước trang 15). Sẽ không ảnh hưởng đến số lượng char của bạn mặc dù.
Alconja

Cảm ơn Alconja. Dễ dàng đi tới 98 trang trước khi thêm bất kỳ ký tự nào vào giải pháp. Tôi sẽ phải chạy lại bài kiểm tra từ nhà tối nay
johnk

11

Hồng ngọc, 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

Sử dụng API trao đổi ngăn xếp.

Đầu ra (tính đến thời điểm của bài gốc):

37200

Tôi không tính &pagesize=100số lượng nhân vật, bởi vì nó hoạt động mà không có nó, nhưng tôi chỉ thêm nó để thuận tiện trong khi thử nghiệm. Nếu bạn loại bỏ điều đó, nó sẽ làm điều tương tự (ngoại trừ việc nó ăn nhiều hạn ngạch hơn và mất nhiều thời gian hơn một chút).


Thật tuyệt, tôi chỉ đạt được con số 275 bằng Python
Claudiu

Ăn nhiều hạn ngạch ??? Bạn chỉ được sử dụng SO và SO.
John Dvorak

@JanDvorak ??? Ý tôi là hạn ngạch API.
Doorknob

1
Các requires có thể được thay thế bằng -rcờ dòng lệnh.
Justin

8

Rebmu - 108 107

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

Kiểm tra (lúc 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 trông khá khó hiểu, nhưng nó khá dễ đọc một khi bạn hiểu rõ về nó. Hãy bắt đầu bằng cách làm sạch nó và đặt nó ra đúng cách.

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 là một phương ngữ của Rebol để bạn có thể thấy những điểm tương đồng trong giải pháp. Rebmu không thể giảm kích thước của mọi tuyên bố, nhưng đó là một ngôn ngữ đang phát triển. Một lần nữa xin cảm ơn @rgchris vì những cải tiến cho nỗ lực đầu tiên của tôi.


ti(thành số nguyên!) sẽ an toàn hơn dotrong Rebmu mà không thay đổi độ dài mã.
rgchris

6

Hồng ngọc - 197

Phiên bản ngắn:

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

Phiên bản thân thiện với con người:

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

Và câu trả lời - 39700

Ruby với các tham số script - 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

Để chạy cái này từ bash, chỉ cần gõ

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

Các requires có thể được thay thế bằng -rcờ dòng lệnh.
Justin

6

PHP - 121 byte

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

Sử dụng công cụ sửa đổi regex 'eval', để tránh sử dụng array_sumhoặc tương tự. Có vẻ là giải pháp ngắn nhất trong số các mục hợp lệ.


4
Công cụ esửa đổi đã không còn được sử dụng kể từ PHP 5.5, nhưng dù sao nó vẫn hữu ích cho việc chơi gôn.
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;

Sẽ lặp qua tất cả các trang, pagesizekhông được đặt để lưu byte nên GETs nhiều hơn .

Rất rất bẩn, nhưng ... lợi dụng PHP"lỗ hổng" của!

  • không có không gian sau echo
  • while dừng lại ở nhiệm vụ
  • đầu ra sau khi RegExthay thế là một chuỗi bắt đầu bằng số tiền thưởng
  • array_sum() thêm chuỗi
  • $n$sđược khởi tạo, nhưng bắt đầu từ không có gì là tương đương. như bắt đầu từ số không
  • v.v ...

5

Bash 206

tối ưu hóa có thể, quá lười biếng

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

kết quả:

39450

4
Tôi có thể sai, nhưng điều này có vẻ như nó có thể rất ngắn với một số tối ưu hóa chất lượng.
rickcnagy

seq 1 11có thể được giảm xuống seq 11.
fedorqui

Bạn sẽ có thể thoát khỏi các khoảng trống xung quanh các đường ống để lưu bốn ký tự và chắc chắn hai greps đó có thể được hợp nhất thành một (ý bạn là "[0-9] +"?).
Desty

Ngoài ra "grep -o -E" => "egrep -o".
Desty

Và bạn có thể thay đổi: "egrep -o '[0-9] +'" => "cut -d '' -f3" :)
Desty

5

Javascript - 129 119 110 107 ký tự

EDIT: ĐÁP ÁN TRẢ LỜI! Điều này chỉ xử lý "Câu hỏi nổi bật hàng đầu", chỉ có một phần trong số đó. Câu trả lời của Alconja có giá trị hơn.

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

Thực thi trên https://stackoverflow.com/?tab=featured trong cửa sổ giao diện điều khiển. Dựa trên giải pháp của Alconja.

Đánh gôn thêm một chút bằng cách loại bỏ các khoảng trắng không cần thiết.

Được sử dụng eval để loại bỏ chức năng gọi, xóa 9 ký tự khác.

xóa một số khoảng trắng không cần thiết hơn.


3

Java, 540 ký tự

Cảnh báo: số tiền thưởng đang hoạt động là ~ 470. Mã này sẽ truy cập một trang trên stackoverflow nhiều lần. Nó có thể khiến bạn gặp rắc rối với họ vì đã thực hiện rất nhiều yêu cầu dữ liệu.

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

Đầu ra của tôi là 23400 , nhưng khi tôi chạy mã của @ TonyH, tôi đã nhận được 37550. Tin xấu.

Mã đẹp:

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

Cách làm việc này rất đơn giản. Nó đọc từ urlhttp://stackoverflow.com/questions" để xác định số lượng câu hỏi có tiền thưởng (lưu ý: nếu số lượng tăng, chương trình không thành công, nhưng nếu giảm, nó hoạt động tốt). Nó tìm kiếm số này bằng regex : b.>(\\d+). Điều này đã làm việc trong tất cả các bài kiểm tra cho đến nay, nhưng nếu ai đó hỏi một câu hỏi phù hợp với biểu thức chính quy đó, thì điều này có thể không hoạt động.

Sau đó, chúng tôi mở url http://stackoverflow.com/questions?pagesize=1&sort=featured&page=+ current question #. Nói cách khác, chúng tôi mở một trang mới cho mỗi câu hỏi nổi bật và buộc số lượng câu hỏi chỉ là1 , vì vậy chúng tôi sẽ có được tất cả. Phần danh tiếng sẽ luôn luôn phù hợpion.>.(\\d+) , vì vậy tôi sử dụng nó để tìm thấy nó. Tôi chia hoạt động thành hai phần để tôi có thể kiểm tra giá rẻ nếu số lượng câu hỏi giảm (tức là chuỗi trả về không phải là số nguyên).

Sau đó, chúng tôi tổng hợp tất cả danh tiếng và in nó.

Mất khoảng 3 phút 20 giây để chạy trên máy của tôi.


Có ai biết tại sao nó không in đúng số không?


Pagesize = 100 cho số lượng lớn. Tôi nghĩ điều gì đó kỳ lạ đang xảy ra vì bạn đang chuyển pageize = 1. Trong câu trả lời của tôi, nếu tôi không chỉ định 'pageize', kết quả gần với số của bạn.
jzm

@malik Vâng Tôi nhận ra rằng tôi "đọc sai" nhận xét của bạn, vì vậy tôi đã xóa của tôi :-). Pagesize = 100 hoạt động như thể pageize = 50. Ý bạn là bạn đã chạy mã của tôi với Pagesize = 100?
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);}}

Sử dụng Stackoverflow.com. Tương tự như dưới đây, ngoại trừ không giải nén Gzip và regex khác nhau.

Kiểm tra

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

Thật kỳ lạ, nhận được một giá trị khác hơn dưới đây.


C # - 496

Điều này sử dụng api.stackexchange được nén và json.

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

Chưa hoàn thành:

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

Kiểm tra

Kích thước trang mặc định:

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

Số trang = 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)

Nó hoạt động từ bất cứ nơi nào trong stackexchange (và nhiều trang web khác), không cần phải ở trong một trang cụ thể như trong câu trả lời @ Alconja / @ NateKerkhofs


jQuery là một thư viện, không phải ngôn ngữ. Không chắc nó có hợp lệ hay không ...
rickcnagy

@ br1ckb0t lấy nó làm javascript nếu bạn thích. jQuery đã có sẵn trên các trang web stackexchange, tôi chỉ nói rõ về$
Einacio

Đúng, điều đó có ý nghĩa! Mã đẹp.
rickcnagy

2

PHP - 139

Chơi gôn

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

Đơn giản 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]);

Kiểm tra:

php run.php

10250


2

Bash

Dựa trên 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

Bạn có thể thoát khỏi pagesize=50&vòng lặp và chỉ cần lặp lại nhiều hơn (tôi nghĩ kích thước trang mặc định nếu 15).
Alconja

@Alconja Hmm, đúng rồi, vì vậy tôi có thể giảm xuống còn 162 ... nhưng chỉ với nhược điểm của nhiều thư rác yêu cầu đến máy chủ.
ngày

2

Python (174 ký tự):

Mở rộng câu trả lời của con trăn ở trên (không có đủ nghiệp lực để bình luận):

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

Yêu cầu thay cho urllib cắt giảm 2 ký tự.


1

Ruby (176 ký tự):

Theo ví dụ của Tony H. về việc sử dụng số trang được mã hóa cứng, đây là những gì tôi nhận được:

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

đã cho tôi 35300 tại thời điểm viết.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.