Sinyal Kesen Sorgular


12

Quining'in uzun bir geçmişi vardır - daha önce duymadıysanız, etiketi tıklayın ve üzerinde biraz okuyun.

Senin görevin

Çıktı sonsuz 1s serisi (başka boşluk bırakmadan [satırsonu, boşluk vb.)) SIGINT UNIGIL (genellikle CTRL-C) denir. Çağrıldığında, program kaynağının çıktısını alın.

kurallar

  • Geçerli bir soru olmalıdır:
  • Herhangi bir dil kullanabilirsiniz.
  • Bu bir kod golf olduğundan, en kısa cevap kazanır!


@ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ Bu gerçekten harika. Kabul edip etmeyeceğimden emin değilim, çünkü sonunda kaynak çıktı vermez, sadece kaynağı söndürmeyi bırakır.
Addison Crump

1
Son karakterin kaynağını çıkaran program olmadığını nasıl anlarsınız? : P (Bu yine de bir şaka cevabı)
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

1
¯ \ _ (ツ) _ / ¯ API, belki?
Addison Crump

Yanıtlar:


4

Python 3, 76 bayt

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

Bayt sayımının sonunda bir satırsonu bulunduğunu unutmayın. Bu, -printsorgulamadan sonra hata yapmak için de kullanılır .


4

Pyth, 25 bayt

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

Try-hariç fonksiyonu eklemek için standart Pyth quine'in bir modifikasyonu.


# Kullanmak bunun için işe yarar mı? 2 bayt tasarruf sağlar.
Mike Bufardeci

@MikeBufardeci Bunu denedim ama işe yaramadım. Kendiniz deneyin.
isaacg

3

AutoIt , 488 429 362 bayt

Beynim ağrıyor, bu çok meta.

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

Bu, ESC basılana kadar ToolTip API'sına 1 çıktısını almaya devam eden bir alt işlemi derleme biçiminde oldukça ilginçtir. ESC tuşuna basılırsa, alt işlem kendini öldürür ve üst öğe (bu quine) yürütmeyi sürdürür ve kaynağını panoya dökür . Bunu editörden çalıştırmalısınız.

BTW: Bu, diskinizde yardımcı bir 'a' dosyası oluşturur.


2
Yardımcı dosyalar! \ o /
Addison Crump

3

Cı, 239 221 206 172 bayt

Kesinlikle çok daha kısa olabilirdi, ama sonunda PPCG'ye bir şey göndermek zorunda kaldım .

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

Gcc 5.2.1 ile derler (çeşitli uyarılarla).


1

Haskell, 206 bayt

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

C #, 339 Bayt

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

Nice Trick - thanks @ LegionMammal978
Stephan Schinkel

Ayrıca, delegateile değiştirilebilir ()=>. Neden kyerel değişken değil ?
LegionMammal978

1

Perl 5.10+, 64 bayt

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

Perl 5.10+ gerektirir saybiriyle etkinleştirilebilir, -M5.010ya -E.

Nasıl çalışır

Bu, her quine mücadelesinde kullandığım aşağıdaki quine'nin başka bir varyasyonu:

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

Bozuldu:

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
'

Hata, başlangıçta 1satırsonu satırlarla ayrılmıştı. 2 baytlık bir maliyetle düzeltildi.
ThisSuitIsBlackNot
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.