Stackoverflow पर कितना इनाम है?


33

कार्य:

आप एक अद्भुत प्रोग्रामर और स्टैकओवरफ़्लो-उत्तरदाता हैं, और आप स्टैकवॉटरफ़्लो पर इनाम के साथ हर प्रश्न का उत्तर देने का निर्णय लेते हैं। आप इतने अच्छे हैं, कि आप सभी प्रश्नों में सभी इनाम प्राप्त करने का प्रबंधन करते हैं। जब आप रेप के आने का इंतजार करते हैं, तो आप एक प्रोग्राम लिखते हैं, जो यह पता लगाता है कि उन सभी बाउंस में प्रतिनिधि की कुल राशि कितनी है।

नियम:

  • जब चला,
    • आपका कार्यक्रम स्टैक ओवरफ्लो पर चित्रित टैब के माध्यम से नेविगेट करेगा।
    • यह प्रत्येक इनाम के मूल्य को खत्म कर देगा,
    • फिर यह इसे जोड़ देगा और कुल प्रदर्शित करेगा
  • इसे SO (और केवल SO) पर कहीं से भी डेटा डाउनलोड करना होगा, लेकिन मैं https://stackoverflow.com/questions?pagesize=50&sort=featured का उपयोग करने की सलाह दूंगा , क्योंकि यह केवल 10 पृष्ठों का है
  • यह , इसलिए सबसे छोटा कोड जीतता है

32

2
stackoverflow.com/?tab=featured । 1 पेज पर सभी सवालों के जवाब।
नजल्ल

7
@NateKerkhofs वह सब नहीं है। नीचे तक स्क्रॉल करें। उदाहरण के लिए, जब मैंने इसे लोड किया, तो यह 472 प्रश्नों में से 96 दिखा रहा था।
bazzargh


@ अन्याय की चर्चा पहले ही हो चुकी है ...
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और आरंभ tके रूप में 0के बजाय""

संपादित करें 3: एहसास हुआ कि मुझे वास्तव में एक विशिष्ट कंटेनर को लक्षित करने की आवश्यकता नहीं है और पूरे दस्तावेज़ को स्वीप कर सकता है, जो .findकॉल का एक गुच्छा और एक अनावश्यक चयनकर्ता से छुटकारा पाता है (साथ ही चर इसे पकड़े हुए)

संपादित करें 4: tएक से बचने के लिए फ़ंक्शन कॉल में इनिशियलाइज़र को बंद करें ;(यह वैसे भी शीर्ष पर फहराया जाएगा) और फ़ंक्शन को एक स्टेटमेंट के नीचे स्क्वैश करें (दो बयानों को एक टर्नरी स्टेटमेंट कंडीशन के अंदर एक में मिलाएं){}

नोट : मुझे यकीन नहीं है कि यह धोखा दे रहा है, लेकिन इसे पहले से ही इशारा कर रहे ब्राउज़र की कंसोल विंडो से चलाना होगा http://stackoverflow.com/questions?page=1&sort=featured। यह इस तथ्य पर निर्भर करता है कि पेज पर ही jQuery और उपयुक्त पेजिंग लिंक उपलब्ध हैं। इसके अलावा, यह केवल फ़ायरफ़ॉक्स में काम करता है और IE या क्रोम में नहीं।

आउटपुट (पोस्टिंग के समय):

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 - गूगल क्लोजर कम्पाइलर का उपयोग किया।
सिरको

8
बहुत सारे आवश्यक पात्रों को दरकिनार करने के लिए भाषा और संदर्भ का डरपोक विकल्प! (जैसे कि " stackoverflow.com/" ) मुझे यह पसंद है!
9

मुझे लगता है कि आपको यह उल्लेख करना चाहिए कि यह jQuery प्लगइन का उपयोग करके किया गया है। जो मुझे लगता है कि यह होना चाहिए .. :)
Mr_Green

Chrome एक सिंटैक्स त्रुटि फेंकता है। एक (पैरेन के साथ एक फ़ंक्शन बॉडी खोलना , क्या यह वास्तव में काम करता है?
thejh

@ म_ग्रीन - मैंने पहले ही नोट कर लिया है, लेकिन मैंने इसे और अधिक ध्यान आकर्षित करने के लिए बोल्ड कर दिया है ...
अलकोंजा

21

अजगर - 232, 231, 195, 183, 176, 174

नियमित भावों का उपयोग करके https://stackoverflow.com/questions?sort=featured से HTML को पार्स करता है ।

ऊपरी के लिए बाध्य rangeमें forपाश चाहिए हो number of pages + 1वरना कोड बढ़ा देंगे HTTPErrorक्योंकि 404s की। प्रति पृष्ठ परिणामों की डिफ़ॉल्ट संख्या 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))
गेब

एक हार्डकोड ऊपरी बाउंड होने से टेस्ट करने में थोड़ी मुश्किल होती है
Einacio


6
@ रिचर्ड हाँ, लेकिन यह कोड गोल्फ है , इसलिए संक्षिप्तता ट्रम्प है कि क्या यह एक "अच्छा विचार" है। मेरा मतलब है, रियल लाइफ में यह कोई अच्छा विचार नहीं है कि कोई एक व्हाट्सएप के साथ भयावह एक-लाइनर लिखने के लिए ...
टिम गुडमैन

3
@ रिचार्ड पार्सिंग html और html से एक्स्ट्रैक्ट करना बहुत अलग कार्य हैं। चूंकि एक वेबसाइट एक स्थिर एपीआई नहीं है, इसलिए इस तरह के निष्कर्षण के लिए काम करने के लिए कुछ भी गारंटी नहीं है । हालांकि टोनी का कोड थोड़ा ओवरगॉल्ड है, इसलिए यह विफल हो जाएगा अगर कोई टैग होता है जिसमें +एक नंबर होता है। उदाहरण के लिए एक प्रश्न शीर्षक उस प्रारूप में फिट हो सकता है।
कोडइंचोस

18

Rebol - 164 133 130 (404 चेक के साथ 139)

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

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

परीक्षा

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

व्याख्या

रॉल व्हाट्सएप को नजरअंदाज करता है, इसलिए आप इसे एक लाइन पर रख सकते हैं जैसे आप चुनते हैं। 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

अच्छा ... मैंने कुछ टिप्पणियों के साथ एक ऑर्डिनरी प्रारूपित संस्करण जोड़ा, आशा है कि आप बुरा नहीं मानेंगे! यह देखना हमेशा बहुत अच्छा होता है कि इस तरह की साक्षरता के साथ नाखूनों को कितनी अच्छी तरह से रिबॉल्ड करें (सभी एक आधे-मेगा क्रॉस-प्लेटफॉर्म में अपाचे-लाइसेंस निष्पादन योग्य हैं, लेकिन जो कि REFORM जैसी चीजों को गले के अंगूठे की तरह बाहर कर देता है हर दूसरे बिट समझ में आता है लेकिन मैं अभी भी देखता हूं उस शब्द पर जाएं और "REDuce और FORM को REFORM में बदल दिया जाए" केवल बदसूरत है । इस पर ध्यान देना बहुत नागफनी है । ओह, और आप किसी को कुछ भी बदल सकते हैं और एक चार को शेव कर सकते हैं! :-)
रिबमु

ओह, 133 होना चाहिए।
rgchris

नोट: आपको उच्च nमूल्य पर लूप करने की आवश्यकता है ... वर्तमान में 28 पेज की बाउंटी हैं (पृष्ठ आकार 15 के लिए)। हालांकि अपने चार गिनती पर असर नहीं पड़ेगा।
अल्कोंजा

धन्यवाद Alconja। समाधान में किसी भी अधिक वर्ण जोड़ने से पहले 98 पृष्ठों तक जाना आसान है। मुझे आज रात घर से टेस्ट फिर से चलाना होगा
जॉन्क

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

स्टैक एक्सचेंज एपीआई का उपयोग करता है।

आउटपुट (मूल पोस्ट के समय):

37200

मैं &pagesize=100कैरेक्टर काउंट में गिनती नहीं कर रहा हूं , क्योंकि यह इसके बिना काम करता है, लेकिन मैंने परीक्षण के दौरान सुविधा के लिए इसे जोड़ा। यदि आप इसे हटाते हैं, तो यह एक ही काम करता है (इसके अलावा यह अधिक कोटा खाता है और थोड़ा अधिक समय लेता है)।


अच्छा है, मैं केवल पायथन में 275
क्लॉडिउ

ज्यादा कोटा खाती है ??? आप केवल SO और SO का उपयोग करने वाले थे।
जॉन ड्वोरक

@JDDvorak ??? मेरा मतलब था एपीआई कोटा।
दरवाज़े

1
requireरों साथ बदला जा सकता -rआदेश पंक्ति फ्लैग।
जस्टिन

8

रेम्बु - १०b १०

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

टेस्ट (19:05 बजे)

>> 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 की एक बोली है जिससे आप समाधान में समानता देख सकते हैं। रेम्बु अभी तक हर बयान के आकार को कम नहीं कर सकता है, लेकिन यह एक विकसित भाषा है। मेरे पहले प्रयास में सुधार के लिए @rgchris को फिर से धन्यवाद।


ti(पूर्णांक!) doकोड लंबाई में कोई परिवर्तन नहीं के साथ रेम्बु की तुलना में सुरक्षित होगा ।
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

इसे बस बैश से चलाने के लिए

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संशोधक पीएचपी 5.5 के रूप में पदावनत किया गया है, लेकिन यह अभी भी फिर भी गोल्फ के लिए उपयोगी है।
फेब्रीसियो मैटे

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आरंभिक हैं, लेकिन कुछ भी नहीं से शुरू करना समान है। शून्य से शुरू करने के रूप में
  • आदि...

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
फेडोरक्वि 20

आपको चार वर्णों को बचाने के लिए पाइप के आसपास के रिक्त स्थान से छुटकारा पाने में सक्षम होना चाहिए, और निश्चित रूप से उन दो ग्रीप्स को एक में मिलाया जा सकता है (क्या आपका मतलब "[0-9] +"?) है।
डेस्टी

इसके अलावा "grep -o -E" => "egrep -o"।
डेस्टी

और आप बदल सकते हैं: "egrep -o '[0-9] +' =>" कट -d '' -f3 ":)
डेस्टी

5

जावास्क्रिप्ट - 129 119 110 107 अक्षर

संपादित करें: औसत उत्तर! यह केवल "शीर्ष विशेषताओं वाले प्रश्न" को संभालता है, जिसमें केवल उनका कुछ अंश होता है। अल्कोंजा का जवाब अधिक मान्य है।

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

कंसोल विंडो में https://stackoverflow.com/?tab=featured पर निष्पादित करें । अलकोंजा द्वारा समाधान के आधार पर।

अनावश्यक व्हाट्सएप को हटाकर इसे थोड़ा और बढ़ाना।

दूसरे 9 वर्णों को साफ़ करते हुए फंक्शन कॉल को निकालने के लिए eval का उपयोग किया।

कुछ और अनावश्यक व्हाट्सएप को मंजूरी दे दी।


3

जावा, 540 चार्ट

चेतावनी: सक्रिय बाउंटी की संख्या ~ 470 है। यह कोड कई बार स्टैकओवरफ्लो पर एक पेज को एक्सेस करेगा। बहुत सारे डेटा अनुरोध करने के लिए यह आपको उनके साथ परेशानी में डाल सकता है।

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, लेकिन जब मैंने @ टोनीह का कोड चलाया, तो मुझे मिल गया 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;
        }
    }
}

जिस तरह से यह काम सरल है। यह उन http://stackoverflow.com/questions"प्रश्नों की संख्या निर्धारित करने के लिए url से पढ़ता है जिनमें बाउंटी हैं (नोट: यदि संख्या बढ़ती है, तो प्रोग्राम विफल हो जाता है, लेकिन यदि यह ड्रॉप हो जाता है, तो यह ठीक काम करता है)। यह रेगेक्स का उपयोग करके इस संख्या को खोजता है b.>(\\d+):। यह अब तक के सभी परीक्षणों में काम किया है, लेकिन अगर किसी ने एक सवाल पूछा है जो कि रेगेक्स से मेल खाता है, तो यह काम नहीं कर सकता है।

फिर, हम url http://stackoverflow.com/questions?pagesize=1&sort=featured&page=+ खोलते हैं current question #। दूसरे शब्दों में, हम प्रत्येक चित्रित प्रश्न के लिए एक नया पृष्ठ खोलते हैं, और प्रश्नों की संख्या केवल होने के लिए मजबूर करते हैं 1, इसलिए हम उन सभी को प्राप्त करेंगे। प्रतिष्ठा का हिस्सा हमेशा मेल खाएगा ion.>.(\\d+), इसलिए मैं इसे खोजने के लिए उपयोग करता हूं। मैंने ऑपरेशन को दो भागों में विभाजित किया है, ताकि मैं सस्ते में जांच कर सकूं कि क्या प्रश्नों की संख्या कम हो गई है (यानी स्ट्रिंग लौटा नहीं है)।

फिर, हम सभी प्रतिष्ठा को जोड़ते हैं और इसे प्रिंट करते हैं।

मेरी मशीन को चलने में लगभग 3 मिनट 20 सेकंड का समय लगा।


क्या किसी को पता है कि यह सही संख्या क्यों नहीं छाप रहा है?


पेजाइज = 100 बड़ी संख्या देता है। मुझे लगता है कि कुछ अजीब हो रहा है क्योंकि आप पृष्ठ 1 = पास कर रहे हैं। मेरे जवाब में, अगर मैंने 'पेजसाइज़' निर्दिष्ट नहीं किया, तो परिणाम आपके नंबर के करीब था।
jzm

@ यामालिक मुझे एहसास हुआ कि मैंने आपकी टिप्पणी को "गलत" कर दिया है, इसलिए मैंने मेरा :-) हटा दिया। पेजाइज़ = 100 इस प्रकार कार्य करता है जैसे पेजेज़ = 50। क्या आपका मतलब है कि आपने मेरे कोड को पेजसाइज़ = 100 से चलाया?
जस्टिन

2

सी # - 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 decompressing और अलग regex को छोड़कर।

परीक्षा

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

अजीब तरह से, नीचे से अलग मूल्य प्राप्त करना।


C # - 496

इसमें Api.stackexchange का उपयोग किया गया है जो कि gzipped और 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);}}

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

परीक्षा

डिफ़ॉल्ट पेजेज़:

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

यह स्टैकएक्सचेंज (और कई अन्य साइटों) में कहीं से भी काम करता है, किसी विशिष्ट पृष्ठ पर @ Alconja / @ NateKerkhofs के उत्तर की आवश्यकता नहीं है


jQuery का एक पुस्तकालय, एक भाषा नहीं है। यकीन नहीं होता कि यह वैध है या नहीं ...
rickcnagy

@ br1ckb0t इसे पसंद आने पर जावास्क्रिप्ट के रूप में लें। jQuery पहले से ही $
स्टैटेक्सचेंज

हां, यह समझ में आता है! अच्छा कोड है।
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]);

अनगोल्डेड - 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 हम्म, ठीक है, इसलिए मुझे यह 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))

यूरेलिब के बदले में अनुरोध 2 चार्ट में कटौती करता है।


1

रूबी (176 वर्ण):

टोनी एच। हार्ड-कोडित पेज नंबरों का उपयोग करने के उदाहरण के बाद, मुझे यहां क्या मिला:

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 दिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.