सिग्नल-इंटरप्टिंग क्विन्स


12

क्विंग का एक लंबा इतिहास है - यदि आपने इसके बारे में नहीं सुना है, तो टैग पर क्लिक करें और उस पर थोड़ा पढ़ें।

आपका कार्य

आउटपुट की एक अनंत श्रृंखला 1(कोई अन्य रिक्ति [newlines, रिक्त स्थान, आदि) के साथ) UNTIL SIGINT (आमतौर पर CTRL-C) को कहा जाता है। जब इसे कहा जाता है, तो प्रोग्राम स्रोत को आउटपुट करें।

नियम

  • यह एक वैध क्वीन होना चाहिए:
    • डिस्क से कोई पठन स्रोत नहीं।
    • खदानों से संबंधित अन्य सभी मानक कमियां देखें ।
  • आप किसी भी भाषा का उपयोग कर सकते हैं।
  • जैसा कि यह एक कोड गोल्फ है, सबसे छोटा उत्तर जीतता है!


@ n @h greata̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ यह वास्तव में बहुत अच्छा है। मुझे यकीन नहीं है कि मैं इसे स्वीकार करूंगा, क्योंकि यह स्रोत को अंत में आउटपुट नहीं करता है, यह सिर्फ स्रोत को बाहर करना बंद कर देता है।
Addison Crump

1
आप कैसे जानते हैं कि अंतिम चरित्र कार्यक्रम का स्रोत नहीं है? : P (यह एक मजाक का जवाब है, वैसे भी)
ñ̷͉h̷̭̿a̸̡̅ẗ̵̨́h̷̰̀ĥ̷̳d

1
¯ \ _ (ツ) _ / maybe एपीआई, हो सकता है?
Addison Crump

जवाबों:


4

पायथन 3, 76 बाइट्स

s="while 1:\n try:print(end='1')\n except:-print('s=%r;exec(s)'%s)";exec(s)

ध्यान दें कि बाइट काउंट में एक अनुगामी न्यूलाइन शामिल है। -printक्विंग के बाद त्रुटि का उपयोग भी करता है।


4

पायथ, 25 बाइट्स

.xf!p1)jN*2]".xf!p1)jN*2]

एक प्रयास को छोड़कर समारोह में जोड़ने के लिए मानक पायथ क्वीन का एक संशोधन।


क्या इसके लिए # काम का उपयोग करेंगे? यह 2 बाइट्स बचाएगा।
माइक बुफ़र्डेकी

@MikeBufardeci मैंने कोशिश की थी, लेकिन काम नहीं कर सका। इसे खुद एक शॉट दें।
इसहाक

3

ऑटो इट , 488 429 362 बाइट्स

मेरा दिमाग दर्द करता है, यह भी मेटा है।

$1=BinaryToString
$2=Chr(34)
$s="FileWrite('a','#include<Misc.au3>'&@LF&'Do'&@LF&'ToolTip(1)'&@LF&'Until _IsPressed(Chr(49)&Chr(66))')+RunWait(@AutoItExe&' a')"
Execute($s)
$x="$1=BinaryToString\n$2=Chr(34)\n%sExecute($s)\n$x=%s\nClipPut(StringFormat($x,$1(0x223D7324)&$s&$1(0x0A0D22),$2&$x&$2))"
ClipPut(StringFormat($x,$1(0x223D7324)&$s&$1(0x0A0D22),$2&$x&$2))

यह उस तरह से काफी दिलचस्प है जब यह एक बच्चे-प्रक्रिया को संकलित करता है जो बदले में ईएससी दबाए जाने तक टूलटिप एपीआई के लिए 1 आउटपुट देता है। यदि ईएससी को दबाया जाता है, तो बच्चे की प्रक्रिया खुद को मार देती है और माता-पिता (यह कुनैन) निष्पादन को फिर से शुरू कर देता है और क्लिपबोर्ड को इसका स्रोत बना देता है । आपको इसे संपादक से चलाना होगा।

BTW: यह आपकी डिस्क पर एक सहायक फ़ाइल 'a' बनाता है।


2
सहायक फाइलें! \ o /
एडिसन क्रम्प

3

सी, 239 221 206 172 बाइट्स

निश्चित रूप से बहुत कम हो सकता है, लेकिन मुझे अंततः पीपीसीजी पर कुछ पोस्ट करना पड़ा ।

*s="*s=%c%s%c,r;h(s){r=1;}main(){signal(2,h);while(!r)printf(%c1%c);printf(s,34,s,34,34,34);}",r;h(s){r=1;}main(){signal(2,h);while(!r)printf("1");printf(s,34,s,34,34,34);}

5.2.1 के साथ संकलन (विभिन्न चेतावनियों के साथ)।


1

हास्केल, 206 बाइट्स

import Control.Exception;main=catch(putStr o)e;o='1':o;e::SomeException->IO();e _=putStr(s++show s);s="import Control.Exception;main=catch(putStr o)e;o='1':o;e::SomeException->IO();e _=putStr(s++show s);s="

1

सी #, 339 बाइट्स

using d=System.Console;class c{static bool k=1>0;static void Main(){d.CancelKeyPress+=delegate{k=1<0;var s="using d=System.Console;class c{{static bool k=1>0;static void Main(){{d.CancelKeyPress+=delegate{{k=1<0;var s={0}{1}{0};d.WriteLine(s,(char)34,s);}};while(k){{d.Write(1);}}}}}}";d.WriteLine(s,(char)34,s);};while(k){d.Write(1);}}}

अच्छी चाल - धन्यवाद @ LegionMammal978
Stephan Schinkel

इसके अलावा, के delegateसाथ प्रतिस्थापित किया जा सकता है ()=>kएक स्थानीय चर क्यों नहीं है?
लीजनमोनमल 978

1

पर्ल 5.10+, 64 बाइट्स

perl -E '$_=q{$SIG{INT}=sub{say"\$_=q{$_};eval";die};{print 1;redo}};eval'

इसके लिए पर्ल 5.10+ की आवश्यकता होती है say, जिसे -M5.010या तो सक्षम किया जा सकता है -E

यह काम किस प्रकार करता है

यह निम्नलिखित क्वीन की एक और विविधता है, जिसका उपयोग मैं हर क्वीन चुनौती पर करता हूं:

$_=q{say"\$_=q{$_};eval"};eval

टूटा:

perl -E '
    $_=q{                        # store contents of quine in $_
        $SIG{INT}=sub{           # install handler for SIGINT
            say"\$_=q{$_};eval"; # print quine
            die                  # break out of eval
        };
        {
            print 1;             # print "1"
            redo                 # restart block
        }
    };
    eval                         # eval $_, executing its contents as code
'

ऊप्स, शुरुआत में 1एस को नए समाचारों द्वारा अलग किया गया था । 2 बाइट्स की कीमत पर तय किया गया।
ThisSuitIsBlackNot
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.