Quine tugas ganda: quine! DlroW, olleH


13

Tulis program yang akan menampilkan kode sumbernya sendiri ketika dijalankan, dan tidak ada yang lain. Tampaknya mudah, bukan?

Tangkapannya adalah bahwa ketika kode sumber dibalik, program Anda harus menampilkan "Halo, Dunia!" tepatnya, tanpa tanda kutip.

Ini adalah kode-golf, sehingga jumlah byte terendah menang.

Sunting : Quine Anda harus quine yang tepat.



4
@Jujurlah, ini bukan jenis quine umum yang saya bicarakan di sana, karena ini bukan "fungsi cetak X dari kode sumber Anda". Yang mengatakan itu mungkin tidak akan bermain sangat berbeda dari yang lain "ketika Anda membalikkan program ..." tantangan yang kita miliki.
Martin Ender

1
@ MartinBüttner Ini cukup mirip dengan tantangan yang Anda jelaskan bahwa saya merasakan alasan yang sama berlaku.
Mego

Jawaban:


8

Y, 19 byte

Upxp"!dlroW ,olleH"

Umenangkap string dengan Udi awal hingga yang berikutnya Uterpenuhi, dalam hal ini, kode sumber. pmencetak item, dan xmerupakan tautan terminasi. Ketika dibalik, ini terlihat seperti:

"Hello, World!"pxpU

Ini menangkap string dan mencetaknya dengan p, sekali lagi mengakhiri program denganx .

Coba di sini!


4
Umendorong Usecara implisit? ಠ_ಠ
Sp3000

1
@ Sp3000 Ini dibuat agar program dapat memodifikasi dirinya sendiri. Secara lebih teknis, Uperintahnya adalah "perintah penangkapan tautan rantai". Itu tidak dibuat untuk quining, tapi itu tidak akan menghentikan saya menggunakannya untuk quining. : P
Conor O'Brien

1
Saya tidak yakin ini dianggap sebagai quine yang tepat. Definisi kami memerlukan bagian dari program yang mengkodekan bagian yang berbeda dari program , tetapi U...hanya mengkodekan U....
Dennis

@Dennis menentukan kode? Saya pikir pbit melakukan output, yang merupakan bagian dari pengkodean.
Conor O'Brien

1
Saya mengambil encode sebagai sesuatu yang menghasilkan output, jadi pdan xtidak akan dihitung. Sebagai contoh, quine SMBF terpendek masih dianggap sebagai quine kecurangan, meskipun kode harus mencetaknya. Mungkin layak meminta Martin untuk klarifikasi.
Dennis

20

JavaScript (ES6), 42 38 byte

f=_=>/\//g&&"f="+f||"!dlroW ,olleH">=_

Terbalik

_=>"Hello, World!"||f+"=f"&&g//\/>=_=f

Penjelasan

Ketika dibalik, itu menjadi fungsi anonim yang mengembalikan string Hello, World! .

Regex /\//gmenjadi komentar ketika dibalik, yang memungkinkan sintaksis tidak valid >=_=funtuk dikomentari dalam kode terbalik.


Ini sangat cerdas. :) Saya tidak akan memikirkan hal ini.
ericw31415

3
1 hanya untuk licik-mata: =_=.
Darrel Hoffman

6

JavaScript (ES6), 71 byte

trela=a=>alert("trela="+trela+"\ntrela\n``")//
`!dlroW ,olleH`
trela
``

Bagaimana itu bekerja:

Baris 1 mendefinisikan fungsi trelayang ketika dijalankan menghasilkan kode sumber program. Baris 2 adalah string yang tidak ditetapkan, tidak melakukan apa pun. Baris 3 dan 4 panggilantrela menyalahgunakan sintaks string templat.

Terbalik:

``
alert
`Hello, World!`
//)"``n\alertn\"+alert+"=alert"(trela>=a=alert

Bagaimana itu bekerja:

Baris 1 adalah string yang tidak ditetapkan, tidak melakukan apa pun. Baris 2 dan 3 menyalahgunakan sintaks string template untuk dicetak Hello, World!. Baris 4 adalah komentar.


Saya melihat bahwa JavaScript tampaknya memiliki beberapa kelonggaran dengan sintaksisnya. Yah, setidaknya lebih dari yang dilakukan Python. Itu bagus.
R. Kap

Apakah yang kosong itu ``tidak perlu?
Rɪᴋᴇʀ

@ EasterlyIrk Tidak, perlu memanggil trelafungsi (yang mencetak quine) dalam versi ke depan
jrich

@rich oh, saya tidak menyadari bahwa ``itulah argumennya. Keren.
Rɪᴋᴇʀ

2
Saya merasa seperti saya harus terbiasa melihat trela- lihat di sini ...> _>
Conor O'Brien



2

KEMBALI , 94 byte

"34¤¤,,,,,,,,,,,,,% 'H'e'l'l'o',' 'w'o'r'l'd'!'"34¤¤,,,,,,,,,,,,,% 'H'e'l'l'o',' 'w'o'r'l'd'!'

Terbalik:

'!'d'l'r'o'w' ','o'l'l'e'H' %,,,,,,,,,,,,,¤¤43"'!'d'l'r'o'w' ','o'l'l'e'H' %,,,,,,,,,,,,,¤¤43"

Try it here.

Output ke STDOUT. Sampai saya menemukan kerangka quine yang lebih baik, ini harus dilakukan untuk saat ini.

Penjelasan

"34¤¤,,,,,,,,,,,,,% 'H'e'l'l'o',' 'w'o'r'l'd'!'"

Ini berisi string quine. Secara terbalik, ini didorong ke stack tetapi tidak di-output.

34¤¤,,,,,,,,,,,,,

Ini mendorong tanda kutip ke stack dan menampilkan hasilnya dua kali sampai tidak ada yang tersisa untuk output. Secara terbalik, ini akan mencetak kode-kode yang sudah ada di tumpukan.

% 'H'e'l'l'o',' 'w'o'r'l'd'!'

Yang ini muncul item tumpukan atas (terbalik, ini akan memunculkan ruang char) dan mendorong serangkaian kode sandi ke tumpukan (secara terbalik, kode ini nantinya akan dicetak oleh seri ,'s).


Saya tidak tahu apakah ini kode RETURN yang benar-benar gila, atau hanya kode RETURN yang normal ._.
Downgoat

Keduanya; _; I cry everytiem
Mama Fun Roll

2

Fisi 2, 42 byte

Adaptasi quine yang luar biasa dari @ MartinBüttner dalam jawaban ini

'!+O!'!d'!l'!r'!o'!W'! '!,'!o'!!l'!e'!H'R"

Cobalah online

Dan terbalik

"R'H!'e!'l!!'o!',!' !'W!'o!'r!'l!'d!'!O+!'

Cobalah online

Dalam versi quine, atom dimulai dari Rarah kanan. The "dimulai modus yang membungkus ke depan mencetak "(sendiri). Ini mencetak semuanya kecuali ". '!+atur atom menjadi char ". Omencetaknya dan menghancurkan atom yang mengakhiri program.

Versi terbalik dimulai di Rlagi dan untuk setiap karakter dalam Hello, Worldmengatur atom dan mencetaknya !tanpa menghancurkan atom. Untuk karakter terakhir !cetakan Omenghancurkan atom.


1

Javascript ES6, 55 byte

$=_=>`$=${$};$()//"!dlroW ,olleH"`;$()//"!dlroW ,olleH"

Cukup sederhana, sungguh.


0

Python 2, 131 byte

Meneruskan:

print(lambda x:x+repr(x)+")#'!dlroW ,olleH' tnirp")('print(lambda x:x+repr(x)+")#\'!dlroW ,olleH\' tnirp")(')#'!dlroW ,olleH' tnirp

Membalikkan:

print 'Hello, World!'#)'()"print '\Hello, World!'\#)"+)x(rper+x:x adbmal(tnirp'()"print 'Hello, World!'#)"+)x(rper+x:x adbmal(tnirp

Babak pertama adalah quine satu baris, diikuti oleh #untuk membentuk komentar yang memisahkan babak pertama dari babak kedua yang lebih sederhana.


Menyesuaikan quine Python ini memberi_='_=%r;print _%%_#"!dlroW ,olleH"tnirp';print _%_#"!dlroW ,olleH"tnirp
Sp3000

0

C, 108 byte

char*s="char*s=%c%s%c;main(){printf(s,34,s,34);}";main(){printf(s,34,s,34);}//};)"!dlroW ,olleH"(stup{)(niam

C99 saya anggap?
Neil

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.