Sinyal-Mengganggu Sinyal


12

Quining memiliki sejarah panjang - jika Anda belum pernah mendengarnya, klik tag dan bacalah sedikit.

Tugas Anda

Keluarkan serangkaian infinite 1(tanpa spasi [baris baru, spasi, dll.]) SAMPAI SIGINT (biasanya CTRL-C) disebut. Ketika dipanggil, output sumber program.

Aturan

  • Itu harus quine yang valid:
    • Tidak ada sumber bacaan dari disk.
    • Lihat semua celah standar lainnya yang berkaitan dengan quines.
  • Anda dapat menggunakan bahasa apa pun.
  • Karena ini adalah kode golf, jawaban terpendek menang!


@ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ Sebenarnya cukup bagus. Saya tidak yakin apakah saya akan menerimanya, karena itu tidak menampilkan sumber pada akhirnya, hanya berhenti memadamkan sumbernya.
Addison Crump

1
Bagaimana Anda tahu karakter terakhir bukan program yang mengeluarkan sumbernya? : P (Bagaimanapun juga, ini adalah lelucon)
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

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

Jawaban:


4

Python 3, 76 byte

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

Perhatikan bahwa jumlah byte termasuk baris baru. Ini juga digunakan -printuntuk kesalahan setelah quining.


4

Pyth, 25 byte

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

Modifikasi standar Pyth quine untuk menambahkan fungsi coba-kecuali.


Akan menggunakan # untuk ini? Ini akan menghemat 2 byte.
Mike Bufardeci

@ MikeBufardeci saya mencobanya, tetapi tidak bisa mulai bekerja. Cobalah sendiri.
isaacg

3

Otomatis , 488 429 362 byte

Otak saya sakit, ini terlalu 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))

Ini cukup menarik dalam cara mengkompilasi proses anak yang sebagai hasilnya terus mengeluarkan 1 ke ToolTip API sampai ESC ditekan. Jika ESC ditekan, proses anak membunuh dirinya sendiri dan orang tua (quine ini) melanjutkan eksekusi dan membuang sumbernya ke clipboard . Anda harus menjalankan ini dari editor.

BTW: Ini membuat file tambahan 'a' pada disk Anda.


2
File bantu! \ o /
Addison Crump

3

C, 239 221 206 172 Bytes

Pasti bisa menjadi jauh lebih pendek, tapi aku harus posting sesuatu di PPCG akhirnya .

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

Kompilasi dengan gcc 5.2.1 (dengan berbagai peringatan).


1

Haskell, 206 byte

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 Bytes

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

Juga, delegatebisa diganti dengan ()=>. Mengapa bukan kvariabel lokal?
LegionMammal978

1

Perl 5.10+, 64 byte

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

Membutuhkan Perl 5.10+ untuk say, yang dapat diaktifkan dengan salah satu -M5.010atau -E.

Bagaimana itu bekerja

Ini adalah variasi lain dari quine berikut, yang sepertinya saya gunakan pada setiap tantangan quine:

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

Rusak:

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
'

Ups, awalnya mencetak 1huruf-huruf yang dipisahkan oleh baris baru. Diperbaiki dengan biaya 2 byte.
ThisSuitIsBlackNot
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.