एक प्रोग्राम लिखें जो खुद डाउनलोड हो


66

एक प्रोग्राम लिखें जो इस साइट से जुड़ता है, बहुत ही उत्तर डाउनलोड करता है जिसमें यह पोस्ट किया गया है, अपने स्वयं के स्रोत कोड को निकालता है और इसे प्रिंट करता है। आउटपुट स्रोत कोड के समान होना चाहिए। सबसे छोटा कोड (बाइट्स में) जीतता है।

नियम:

  • किसी भी URL शॉर्टनर की अनुमति नहीं है।
  • उत्तर में एक नियमित प्रारूप होना चाहिए - भाषा के नाम और आकार, वैकल्पिक विवरण, कोड ब्लॉक, वैकल्पिक विवरण और स्पष्टीकरण के साथ एक शीर्षक। किसी भी अप्राकृतिक परिसीमन की अनुमति नहीं है।
  • आउटपुट को साइट पर पोस्ट किए गए वास्तविक कोड ब्लॉक से उत्पन्न होना चाहिए।
  • कार्यक्षमता को उत्तर सूची में स्थिति पर निर्भर नहीं होना चाहिए; यह तब भी काम करना चाहिए जब एक से अधिक पृष्ठ हों और इसका उत्तर पहले पर न हो।
  • नया: एक ब्राउज़र में चलाए जाने वाले उत्तरों के लिए विशेष ध्यान दें : कोडगॉल्फ डोमेन पर उन्हें चलाने की आवश्यकता ठीक है (समान-मूल नीति का पालन करने के लिए) लेकिन समाधान के क्रम में डोमेन और पथ को समाधान में शामिल किया जाना चाहिए इसे उचित बनाओ।

39
कैच -22: मैं अपनी अधीनता का परीक्षण कैसे करूँ?
मार्टिन एंडर

9
मैं जवाब पोस्ट करने और उन्हें हटाने वाले लोगों को भूल जाता हूं, इसलिए वे अपने कोड का परीक्षण कर सकते हैं।
जस्टिन

4
@ m.buettner जवाब अन्य उत्तरों (अन्य प्रश्नों के लिए) पर पहले परीक्षण किया जा सकता है, फिर पोस्ट किया गया, फिर URL बदलने के लिए संपादित किया गया :)
aditsu

8
@ हेक्सफ़्रेक्शन यदि टिप्पणियां किसी उत्तर के साथ हस्तक्षेप करने में सक्षम हैं, तो उत्तर बहुत अच्छा नहीं है ...
aditsu

17
मेरे सिर में एक प्रश्न अटका हुआ है: किसी भी URL शार्टनर का उपयोग किए बिना स्वयं से लिंक करने वाले ट्वीट को कैसे लिखें, लेकिन ट्वीट का अनुमान लगाने से आपके ट्वीट का पता चलता है?
मिंग-तांग

जवाबों:


34

बैश + कोरुटिल्स + लिंक्स ब्राउज़र, 61 बाइट्स

युक्तियों के लिए @Finoff को धन्यवाद:

lynx -dump codegolf.stackexchange.com/posts/28164/body|grep 2

4
और क्या होता है अगर मैं उस जादुई शब्द grep को खोजता हूं?
छाया

3
lynx lynx लीनिक्स lynx इस टिप्पणी को बाहर निकाला जाएगा (और साथ ही शीर्षक)
re--

1
@ हेक्सफ़्रेक्शन ए.डब्ल्यू। आपको इसे बर्बाद करके जाना था!
छाया

8
यह url काम करना चाहिए। codegolf.stackexchange.com/posts/28164/bodyऔर यह टिप्पणियों की अनदेखी करता है। मुझे यह भी लगता है कि इसके नियमों के भीतर आप इसका इस्तेमाल कर सकते हैं ...
एफडिनॉफ

3
@DigitalTrauma awww ... धिक्कार है।
हनीफमुबारक

22

रूबी, 155 186 195 148 138 110 97 वर्ण

require'open-uri';puts open('http://codegolf.stackexchange.com/posts/28159/body').read[/req.+;/];

मुझे इसे एक पंक्ति बनाना था, क्योंकि अन्यथा यह \nवास्तविक समाचारों के बजाय नई कहानियों का उत्पादन करता।

  • +31 वर्ण क्योंकि मैंने ध्यान नहीं दिया कि कुछ पात्र बच गए थे।
  • +9 वर्ण कष्टप्रद बैकस्लैश से छुटकारा पाने के लिए।
  • ऊपर दिए गए अधिकांश सुधारों की आवश्यकता को हटाकर, 55 और (!!!) की बचत के लिए 2 चरों की बचत के लिए नाथन उसमान का धन्यवाद।

स्पष्टीकरण

पहले इसे थोड़ा सुशोभित करते हैं। हालाँकि, मुझे इस कोड में कुछ हद तक ... दिलचस्प अंकन का उपयोग करना होगा। मैं बाद में बताए गए कारणों से इस पोस्ट में अर्धविरामों का उपयोग नहीं कर सकता, इसलिए मैं {SEMI}इसके स्थान पर अर्धविरामों का उपयोग करूंगा ।

require 'open-uri'
resp = open('http://codegolf.stackexchange.com/posts/28159/body').read
puts resp.match(/req.+{SEMI}/){SEMI}

ठीक है, अब इस माध्यम से चलो। पहली दो पंक्तियाँ काफी आत्म-व्याख्यात्मक हैं - वे इस उत्तर के HTML पाठ को प्राप्त करते हैं।

अब, अंतिम पंक्ति यहां दिलचस्प है। आपको लगता है कि कोड के अंत में प्रतीत होता है बेकार अर्धविराम? यह बिल्कुल आवश्यक है, और यहाँ क्यों है।

सबसे पहले, resp.matchमुद्रित होने वाला कोड निकालता है। इस के लिए उपयोग करता है regexp चाल है /req.+{SEMI}/:। यह कोड की शुरुआत पकड़ लेता है REQuire'net/http', खोज के द्वारा req( reमेरी हड़प जाएगा REputation)। फिर, यह एक अर्धविराम की खोज करके कोड के अंत का पता लगाता है! चूंकि +डिफ़ॉल्ट रूप से लालची है, यह तब तक चलता रहेगा जब तक कि यह अर्धविराम नहीं मिल जाता है जो कोड के अंत का प्रतीक है। देखें कि मैं अर्धविरामों का उपयोग क्यों नहीं कर सकता?

उसके बाद, मुझे अब किसी भी चीज़ का उपयोग करने के लिए वेंटरो के तय करने के लिए धन्यवाद को हटाने की आवश्यकता \नहीं है। मुझे बस इतना करना है कि जिस हिस्से को हटाकर बस हासिल किया जा सकता है, उसे {AMPERSAND}बदल देना है । {AMPERSAND}amp{SEMI}amp{SEMI}नए URL के कारण अब इसकी कोई आवश्यकता नहीं है। उसके बाद, मूल कोड को पुनः प्राप्त किया गया है! (नोट: मैं एम्परसेंड का उपयोग नहीं कर सकता, क्योंकि इससे एचटीएमएल-एन्कोडेड हो जाता है जो अर्धविराम पैदा करता है।)


कुछ पात्र बच रहे हैं ..
aditsu

1
@aditsu गह; उस पर ध्यान नहीं दिया। फिक्स्ड।
दरवाज़े

आप इससे नफरत करने वाले हैं .. एक बैकस्लैश की नकल हो रही है। इसमें एक नया अंतर भी है, लेकिन यह एक मामूली बात है।
एडिट्स

@aditsu अर्घ! : पी फिक्स्ड भी। न्यूलाइन की वजह से है puts; यह printmeh के साथ तय किया जा सकता है । सिर्फ दिखावा कोड में एक अनुगामी newline है, भले ही एसई यह दिखाने में सक्षम नहीं होगा।
दरवाज़े

1
लिंक के लिए, http://codegolf.stackexchange.com/a/28159आपकी तरह ही परिणाम देगा और कुछ वर्णों को बचाएगा।
Mhmd

20

पॉवरशेल - 69 62

(irm codegolf.stackexchange.com/posts/28236/body).div.pre.code

एक खोल में डोम। अच्छा!
फ्रीगेट

क्या irm को Azure अधिकार प्रबंधन की आवश्यकता नहीं है? उस मॉड्यूल के बिना, मुझे लगता है कि आप इसे Invoke-WebRequest के साथ कर सकते हैं।
स्कॉट लेडले

@ScottLeadley irmके लिए अन्य नाम है Invoke-RestMethodऔर PowerShell v3 कोर के साथ पेश किया गया था। computerperformance.co.uk/powershell/powershell3-alias.htm
रयानेंट

10
बकवास। एक PowerShell कोड गोल्फ उत्तर की लंबाई के समान क्रम में लंबाई के साथ प्रमुख उत्तर। +1
एडम मरास

@AdamMaras हा, मुझे पता है कि आपका क्या मतलब है! यह कभी-कभार ही होता है। codegolf.stackexchange.com/a/26811/4565 और codegolf.stackexchange.com/a/21982/4565 लीड से बहुत दूर नहीं थे।
Rynant

15

जावास्क्रिप्ट - 123 122 101 95 92 91 87 86 114

with(new XMLHttpRequest)send(open(0,/\codegolf.stackexchange.com\posts\28175\body/,0)),alert(/w.*/.exec(response))

इस पृष्ठ पर आपके वेब ब्राउज़र के कंसोल में चलता है। नवीनतम क्रोम और फ़ायरफ़ॉक्स पर परीक्षण किया गया ।

संपादित करें: पूर्ण डोमेन जोड़ने के लिए 5: बाइट्स।

फ़ायरफ़ॉक्स इस अद्यतन के साथ अब मेरी Rexx यूआरएल चाल पसंद नहीं है :(

यहाँ नियम-तोड़ 86 बाइट समाधान है:

with(new XMLHttpRequest)send(open(0,/posts\28175\body/,0)),alert(/w.*/.exec(response))

इससे मुझे खौफ हुआ। कई बार।
प्रातः

1
@ bfred.it मैंने एक दिलचस्प रीगेक्स का उपयोग करके केवल एक बाइट काटा। मुझे आशा है कि यह आपको एक बार और विस्मय में डालेगा।
14:59 बजे अंडरस्कोर

यदि कंसोल पर मुद्रण आउटपुट की स्वीकार्य विधि है, तो आप अलर्ट को हटाकर 7 वर्णों को छोटा कर सकते हैं।
तेजस काले

इसके अलावा, नए नियम के अनुसार आप codegolf.stackexchange.com/यूआरएल में जोड़ना चाहते हैं।
तेजस काले

1
@TejasKale क्या मैंने देखा है कि लोग समाधानों पर भड़क गए हैं जो वास्तव में सतर्क / दस्तावेज नहीं करते हैं।
'12

10

रूबी + wget + gunzip , 159 86 82 71

@Finoff का उपयोग करने के लिए टिप का उपयोग करना http://codegolf.stackexchange.com/posts/28173/body

puts `wget -qO- codegolf.stackexchange.com/posts/28173/body`[/pu.*\]/]

का परीक्षण किया। कमांड लाइन अनुकूलन के लिए @ace और @ याकूब का धन्यवाद।


2
आप झंडे को जोड़ सकते हैं wget, जैसे कि अंदर wget -qO- url। इसके अलावा, बैश में आपको यूआरएल के लिए दोहरे उद्धरण चिह्नों की आवश्यकता नहीं है, इसलिए यह आपके लिए भी काम कर सकता है।
ace_HongKongInd डिपेंडेंस

आप बाहर छोड़ सकते हैं http://
बॉब

6

CJam - 53

"codegolf.stackexchange.com/posts/28184/body"g54/1=);

जब से मैं अपने सवाल का जवाब दे रहा हूं और इस प्रतियोगिता को वास्तव में प्रतिस्पर्धा नहीं करना चाहता: मैं इस समुदाय को विकी बना रहा हूं:
URL विकल्प के लिए FDinoff को क्रेडिट।


वूट, +1 स्माइली फेस फॉर कोड
क्रंचर

1
@ क्रंचर );मुझे बहुत स्माइली नहीं लगता ...
एमडी एक्सएफ

5

रेम्बु, 91 वर्ण

कैच -22 के कारण मुझे इस उत्तर का URL प्राप्त करने के लिए पोस्ट करना होगा। :-/ ठीक है समझ आ गया।

paTSrd http://codegolf.stackexchange.com/a/28154[th<a name="28154">th<code>cpCto</code>]prC

Rebmu Rebol की एक बोली है, और आप इसे पढ़ सकते हैं । यहाँ समकक्ष बराबर होगा:

parse to-string read http://codegolf.stackexchange.com/a/28154 [
    thru <a name="28154">
    thru <code>
    copy c to </code>
]
print c

रेबो का PARSE, RegEx के लिए एक उच्च साक्षर उत्तर है। यह इनपुट की एक पार्सर स्थिति शुरू करता है (जो संरचनात्मक ब्लॉक ... बाइनरी डेटा ... या स्ट्रिंग प्रकार सहित किसी भी श्रृंखला हो सकती है) । नियम हैं कि पार्स स्थिति कैसे चलती है, इसके लिए एक भाषा है।

टैग और यूआरएल वास्तव में भाषा में हुड के नीचे सिर्फ तार हैं। लेकिन वे "सुगंधित" हैं, और जैसा कि Rebol गतिशील रूप से टाइप किया गया है आप उस प्रकार की जांच कर सकते हैं। उदाहरण के लिए READ जानता है कि यदि आप इसे URL-फ्लेवर्ड स्ट्रिंग देते हैं, तो उसे रीडिंग करने के लिए किसी स्कीम हैंडलर को भेजना चाहिए। (इस मामले में, एक HTTP के लिए पंजीकृत)। आप डिफ़ॉल्ट रूप से UTF-8 बाइट्स प्राप्त करते हैं, इसलिए हम इसे डिकोड करने के लिए और एक सामान्य यूनिकोड स्ट्रिंग में कोडपॉइंट की एक श्रृंखला प्राप्त करने के लिए उपयोग करते हैं।

पार्स बोली के मामले में, एक टैग प्रकार का सामना करना सिर्फ इस तरह से मेल खाता है जैसे कि यह एक स्ट्रिंग थी जो टैग की तरह दिखती थी। THRU एक निर्देश है जिसका अर्थ है "तब तक छोड़ें जब तक कि आगामी नियम का मिलान नहीं हो जाता है, और फिर आप जो मिलान करते हैं उसके अंत में मैच की स्थिति रखें।" (करने के लिए अनुरूप है कि मेल खाता है, लेकिन तत्व से पहले पार्स स्थिति छोड़ देता है)।

इसलिए हम अतीत के साथ ज़िप करते हैं <a name="28154">। तब हम अपनी अगली स्थिति के <code>साथ, जिस के ठीक बाद स्थित होते हैं, की अगली घटना को अतीत में बदल देते हैं >। PARSE की COPY कमांड तब हमें दूसरे नियम तक डेटा कॉपी करने देती है, इस मामले में वह नियम है [TO </code>]... इसलिए हम चर C में सब कुछ ठीक होने से पहले तक प्राप्त कर लेते हैं <

कूल , हह? :-)

उदाहरण के लिए, मैं इसे और अधिक शेव कर सकता था, उदाहरण के लिए TO "</"तीन पात्रों को खोजकर और सहेज कर रखता है - </code>जब आपको बस </करना होगा तो पूरे एंड टैग से मिलान करने की कोई आवश्यकता नहीं है। इसी तरह के तर्क मुझे शुरू टैग के लिए किए जा सकते थे। लेकिन रेम्बु साक्षर गोल्फ के बारे में है ... भले ही आपको लगता है कि यह पहली बार में अजीब लग रहा है!

अद्यतन : /bodyचाल बैग से बाहर है, लेकिन मैं उसी तरह इसे छोड़ने जा रहा हूँ-जैसा है ... क्योंकि मुझे लगता है कि यह इस तरह से अधिक शैक्षिक है।


5

जावा अब 634, 852, 1004 था

कोड अपडेट किया गया है; सुझाव के लिए धन्यवाद। गोल्फ: अब जगह & gt के साथ>

//bacchus
package golf;
import java.net.*;
import java.util.*;
public class G{
public static void main(String[] a) throws Exception {
Scanner z;
URL u;
int x=0;
String s;
u=new URL("http://codegolf.stackexchange.com/questions/28154/write-a-program-that-downloads-itself");
z=new Scanner(u.openConnection().getInputStream());
z.useDelimiter("\\s*//bacchus\\s*");
while(z.hasNext())
{
s=z.next();
s=s.replace("&gt;", ">");
if(x>0)System.out.println("//bacchus\n"+s);
x++;
if(x>2)break;
}
System.out.println("//bacchus\n");
}
}
//bacchus

परीक्षण के लिए सबमिट करते हुए, मैं इसे शीघ्र ही संपादित करने और इसे आज़माने का प्रयास करूंगा। X> 1 से x> 2 को बदलने की आवश्यकता है क्योंकि परीक्षण स्ट्रिंग मेरे कोड में भी है। नोट: कोड गोल्फ की जगह> प्रतीक को & gt;

//bacchus
package golf;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class Golf {

    public static void main(String[] args) throws IOException {
        URL u;
        URLConnection c;
        InputStream i;
        InputStreamReader r;
        BufferedReader b;
        String s;
        int x=0;
        try {
            u=new URL("http://codegolf.stackexchange.com/questions/28154/write-a-program-that-downloads-itself");
            c=u.openConnection();
            i=c.getInputStream();
            r=new InputStreamReader(i);
            b=new BufferedReader(r);
            while((s=b.readLine())!=null)
            {
                if(s.contains("//bacchus")) x++;
                if(x>0)System.out.println(s);
                if(x>2) break;
            }
            i.close();
            b.close();
        } catch (MalformedURLException ex) {

        }
    }

}
//bacchus

7
आप टिप्पणियों को कैसे संभालेंगे //bacchus?
----

3
आप बहुत सारे सामान, कोशिश, संसाधनों के साथ इनलाइन कर सकते हैं, और *बहुत सारे कोड को बचाने के लिए आयात का उपयोग कर सकते हैं ।
साइमन कुआंग

@SimonKuang - मैं भी सिर्फ सामान बंद करने के बजाय धाराओं को खुला छोड़ दूंगा। इसके अलावा, throws Exceptionकुछ भी संभालने की कोशिश करने के बजाय। इसके अलावा, मुझे लगता है कि बफ़रडेडर के बजाय स्कैनर का उपयोग करना सरल होगा, खासकर जब आप सीमांकक को सेट कर सकते हैं //bacchus, जिससे चीजें कुछ हद तक आसान हो जाएंगी ...
जूल्स

5

पायथन, 175 167 बाइट्स

यह दो बाहरी पुस्तकालयों का उपयोग करता है; मैंने नहीं पढ़ा कि यह अनधिकृत था।

import bs4,requests
print(bs4.BeautifulSoup(requests.get('http://codegolf.stackexchange.com/q/28154').text).select('#answer-28171')[0].select('pre > code')[0].string)

लंबा, लेकिन अच्छा दिखने वाला कोड:

import bs4, requests
request = requests.get('http://codegolf.stackexchange.com/q/28154')
soup = bs4.BeautifulSoup(request.text)
answer = soup.select('#answer-28171')[0]
code = answer.select('pre > code')[1].string
print(code)

1
questionsयूआरएल में साथ बदला जा सकता q:http://codegolf.stackexchange.com/q/28154
जस्टिन

1
bs4, requests1 बाइट को कम करने के लिए (लाइन 1) में जगह को हटाया जा सकता है।
ace_HongKongIndependence

5

जावास्क्रिप्ट, 228

r=new XMLHttpRequest()
c='code'
r.open('GET','//'+c+'golf.stackexchange.com/posts/28157/body')
r.onreadystatechange=function(){this.readyState==4&&alert((a=r.responseText).substr(i=a.indexOf(c)+5,a.indexOf('/'+c)-i-1))}
r.send()

इस पृष्ठ पर चलता है।


आप इसे कैसे चलाते हैं?
एडिट्स

@aditsu को एक ब्राउज़र के जावास्क्रिप्ट कंसोल पर चलाया जाना चाहिए। लेकिन मैं अभी भी परीक्षण कर रहा हूं (और इसे ठीक कर रहा हूं) कृपया प्रतीक्षा करें
ace_HongKongInd डिपेंडेंस

@aditsu अब यह काम करना चाहिए। अपना ब्राउज़र कंसोल खोलें (F12 दबाएं) और इस कोड को वहां पेस्ट करें।
ace_HongKongIndependence

सर, आपको if(this.readyState == this.DONE)फंक्शन के अंदर की जरूरत है ।
फैब्रिकियो

1
@ace मैं देख रहा हूँ :) मैंने अब तक अन्य js उत्तर नहीं देखा। फिर इस
अपवित्र

4

हास्केल, 563 613 बाइट्स

import Control.Monad
import Data.List
import Network.HTTP
m%f=join(fmap f m)
q s=(simpleHTTP(getRequest"http://codegolf.stackexchange.com/questions/28154/write-a-program-that-downloads-itself?answertab=oldest#tab-top"))%getResponseBody%(putStrLn.head.filter((==)(s++show s)).map(take 613).tails)
main=q"import Control.Monad\nimport Data.List\nimport Network.HTTP\nm%f=join(fmap f m)\nq s=(simpleHTTP(getRequest\"http://codegolf.stackexchange.com/questions/28154/write-a-program-that-downloads-itself?answertab=oldest#tab-top\"))%getResponseBody%(putStrLn.head.filter((==)(s++show s)).map(take 613).tails)\nmain=q"

का परीक्षण किया। "सबसे पुरानी पोस्ट" सुविधा के माध्यम से पृष्ठ का समर्थन है। प्रिंट करने के लिए क्विन-लाइन संरचना का उपयोग करता है। import Control.Monadसिर्फ इसलिए है >>=उत्पन्न करता है &gt;HTML में।


4

जावास्क्रिप्ट + jQuery, Query , ६Query

मुझे यकीन नहीं है कि मुझे jQuery का उपयोग करने की अनुमति है, लेकिन:

$('body').load('//codegolf.stackexchange.com/posts/28268/body pre')

जावास्क्रिप्ट + jQuery, अगर इस पृष्ठ में excecuted: 27 , 25

मौज-मस्ती के लिए, अगर यह यहाँ होगा:

$('[id$=268] pre').html()

$('[id$=28268] pre').html()


1
यह स्रोत कोड से अधिक आउटपुट करता है।
14:05 बजे अंडरस्कोर

1
$('body').load('//codegolf.stackexchange.com/posts/28268/body pre')
n

आप सही हैं, मैंने कोड के बजाय पूरे उत्तर को गलत तरीके से लिया
मार्टिज़न

4

w3m 45 अक्षर

w3m codegolf.stackexchange.com/a/28336|grep ☻

1
☺। क्या यह अभी भी काम करता है? संपादित करें: ऐसा लगता है कि यह करता है।
ace_HongKongIndोसेंडेंस

@ace मुझे आपकी टिप्पणी तब मिलती है जब मैं इसे चलाता हूं
एफडिनॉफ

फिक्स्ड :) कोई और? 😁
gnibbler

3

डार्ट, 164

मैंने सोचा कि मैं डार्ट में यह कोशिश करूँगा, इमो का उपयोग करने के लिए बहुत मजेदार है।

इसे DartEditor में कंसोल में चलाया जा सकता है, लेकिन इसके लिए pubspec.yaml में जोड़ा गया http पैकेज आवश्यक है

import"package:http/http.dart"as h;h.read("http://codegolf.stackexchange.com/posts/28215/body").then((s){print(new RegExp(r"im.+(?:})").firstMatch(s).group(0));});}

Ungolfed संस्करण:

import "package:http/http.dart" as h;

void main()
{
  h.read("http://codegolf.stackexchange.com/posts/28215/body").then((s)
  {
    print(new RegExp(r"im.+(?:})").firstMatch(s).group(0));
  });
}

2

आर 114 अक्षर

library(XML);cat(xpathSApply(xmlParse("http://codegolf.stackexchange.com/posts/28216/body"),'//code',xmlValue)[1])

यहां कोई वास्तविक जादू नहीं है: यह html टैग के बीच क्षेत्र का मूल्य लेता है <code></code>। लाइब्रेरी का उपयोग करता है XML(जैसा कि कोड में स्पष्ट रूप से देखा जा सकता है)। परिणाम को stdout के रूप में आउटपुट करता है।


1

जावा, 300 294

import java.net.*;import java.util.*;public class G{public static void main (String [] a) throws Exception{Scanner s=new Scanner(new URL("http://codegolf.stackexchange.com/posts/28189/body").openConnection().getInputStream()).useDelimiter("./?[c]ode\\W");s.next();System.out.print(s.next());}}

Bacchusbeale के उत्तर का एक उन्नत संस्करण जो:

  • संसाधनों को अनावश्यक रूप से बंद न करें
  • अनावश्यक चर घोषित नहीं करता है
  • Scannerइनपुट पर लूप होने से बचने के लिए एक का उपयोग करता है
  • एक regexp का उपयोग करता है जो स्टार्ट / एंड मार्कर की मध्य घटना को छोड़ कर बचने के लिए खुद से मेल नहीं खाता है।

अपडेट किया गया:

  • पोस्ट के लिए एक सीधा URL का उपयोग करें, इसलिए हमें कोड के प्रारंभ / अंत की पहचान करने के लिए एक अनूठी टिप्पणी की आवश्यकता नहीं है; अब का उपयोग करता है <code>[...]</code>, के लिए (वास्तव में नियमित अभिव्यक्ति "./?[c]ode\W" का उपयोग कर खोज करने के लिए इतनी के रूप में डिकोड करने के लिए होने से बचाने के डिलीमीटर के रूप में &lt;और &gt;- "\ डब्ल्यू" बल्कि से कम आवश्यक है "।" URL के पोस्ट से मिलान वाले भाग से बचने के लिए, दुर्भाग्य से, जिसमें 2 वर्ण हैं, और c के चारों ओर वर्ग कोष्ठक regex मिलान को रोकते हैं)।

1
आपके पास अनावश्यक स्थानों का एक गुच्छा है। इसके अलावा आपकी कक्षा को सार्वजनिक होने की आवश्यकता नहीं है।
aditsu

1
OpenConnection ()। getInputStream () को भी OpenStream () में छोटा किया जा सकता है
aditsu

1

w3m 55 बाइट्स

w3m codegolf.stackexchange.com/posts/28242/body|grep x

@DigitalTrauma पर आधारित है


1

रूबी, 237 215 146 132

require'mechanize'
a=Mechanize.new
puts a.get('http://codegolf.stackexchange.com/a/28159').search('.lang-rb code:nth-child(1)').text

बहुत यकीन है कि आप कुछ बाइट्स को बचाने के लिए यहां और वहां कुछ रिक्त स्थान निकाल सकते हैं।
मिस्टरबला

@richard को परवाह है कि मैं वैसे भी जीतने वाला नहीं हूं।
Mhmd

1
जीत के लिए नहीं, लोल के लिए करो।
मिस्टरबला

@ रीचर्ड ने किया, और मैंने regexp से कुछ चार्ट भी हटा दिए।
प्रातः

1

प्रसंस्करण, 90

print(loadStrings("http://codegolf.stackexchange.com/posts/28657/body")[2].substring(11));

संपादित करें: अंत में यह मिल गया!


1

bash + awk, 71 बाइट्स

curl -sL codegolf.stackexchange.com/q/28154 |awk -F\> '/\#/ {print $3}'

2
काम करने के लिए प्रतीत नहीं होता है - यह इस जवाब के साथ कई अन्य सामान का उत्पादन करता है।
Riking

@ सच्चा, यह स्थिति-निर्भर (अंतिम नियम को तोड़ने वाला)
प्रतीत होता है

आप बाहर छोड़ सकते हैं http://
बॉब

@ user155406: ध्यान दें कि प्रत्येक उत्तर में एक URL है - यह एक कोडगॉल्फ
Phil H

0

जावास्क्रिप्ट, 138

a=window.open("http://codegolf.stackexchange.com/posts/28160/body");setTimeout('alert(a.document.body.innerHTML.match(/a=.*9\\)/)[0])',99)

यह मानकर काम करता है कि पृष्ठ 99 ms से कम है। यह कोडगुल्फ़ पर खोले गए कंसोल के माध्यम से भी चलाया जाना चाहिए। एक ही मूल नीति के कारण, इस पृष्ठ पर।


बस एक नोट: आपको URL में स्लग की आवश्यकता नहीं है, और प्रश्नों को q से बदला जा सकता है।
मतभेद

1
ध्यान दें कि आप http://codegolf.stackexchange.com/a/28160इसके बजाय कर सकते हैंhttp://codegolf.stackexchange.com/a/28160/12551
जस्टिन

Chrome को यह पसंद नहीं है: "
अनकैप्ड टाइपर्रर:

@ इसके बाद आपको पॉपअप ब्लॉकर को अक्षम करना चाहिए।
nderscore

0

पर्ल 5.10, 155 127 122 117 बाइट्स

use XML::LibXML;say XML::LibXML->new->parse_file('http://codegolf.stackexchange.com/posts/28330/body')->find('//pre')

का उपयोग कर XML::LibXML


0

शैल और xmllint, 82 बाइट्स

xmllint --xpath 'string(//pre)' http://codegolf.stackexchange.com/posts/28333/body

0

अजगर, १६४

कोड टैग के बीच पाठ को निकालकर काम करता है। यह काफी लंबा है, लेकिन यह हमेशा सही ढंग से काम करेगा जब तक कि html पेज को सीधे संपादित नहीं किया जाता है या नीचे दिए गए एक से पहले एक नया कोड ब्लॉक जोड़ा जाता है (कोड का एक ब्लॉक होने के बाद प्रोग्राम के आउटपुट पर कोई प्रभाव नहीं होना चाहिए)।

import urllib2
print urllib2.urlopen("http://codegolf.stackexchange.com/posts/28617/body").read().split(chr(60)+"code"+chr(62))[1].split(chr(60)+"/code"+chr(62))[0]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.