Natal quine!

10

Dalam bahasa pilihan Anda, tulislah sebuah program yang disusun dalam bentuk pohon Natal yang mencetak dirinya dalam bentuk yang sama.

Apa yang tidak diizinkan:

  • Mencetak file sumber
  • Kode yang tidak lain adalah pernyataan yang digemakan oleh penafsir berdasarkan mereka menjadi literal (misalnya hanya menggunakan menara daftar berbentuk pohon dengan python)
Manishearth
sumber
"Mencetak file sumber" tidak diizinkan, tetapi apakah membaca kode sumber (bukan dari file) dan mencetaknya diizinkan? Jika tidak, maka ini praktis tidak mungkin dilakukan dengan Befunge. : /
Justin

Jawaban:

16

JavaScript

'Bintang' itu mungkin agak terlalu besar untuk pohon ...

        (function _()
     {return('        (')
      +(''+''+''+''+'')
             +_+
            ')()'
           ;'We w'
          +'wis'+0+
         'h you a '
        +0+'merry Ch'
       +'ristmas, '+0+
      +'we '+0+'wish y'
     +0+'ou a merry Chr'
    +'istmas, we w'+0+'i'
   +0+'sh you '+0+'a merr'
  +'y Christmas and a h'+0+
 +'appy'+0+'new year! Ho ho'
+0+' ho! Merry '+0+'Christma'
            +'s!'
            })()

Nol adalah pernak-pernik dan terlihat terbaik di editor:

Hore untuk penyorotan sintaks!

Keluaran dalam alat Pengembang Chrome

Dom Hastings
sumber
3
Trik yang bagus dengan pernak-pernik!
Manishearth
2
Saya suka dimasukkannya "Kami mengucapkan selamat Natal!"
Iszi
11

Rubi

Anda tidak pernah mengatakan kami tidak dapat menggunakan akses jaringan ...: D

        #
       s="
      open(
     'http:/
    /pastebin
   .com/raw.ph
  p?i=mGzbahp5'
 ).read";s=eval(
s.gsub! /\s/,'');
      puts(
      s+'')

Keluaran sendiri kata demi kata.

Ya, saya bisa menggunakan pemendek URL, tapi itu akan membuatnya kurang jelas dan lucu: P Juga saya perlu sesuatu untuk mengambil ruang; kalau tidak pohon itu akan kecil.

Jalankan seperti ini:

ruby -ropen-uri christmasquine.rb
Gagang pintu
sumber
5
Dalam pikiranku kamu curang, tetapi kamu benar tentang aturan. Diakali oleh gagang pintu. Bagaimanapun, inilah
jawaban
1
@Manishearth Yap, kita melanggar aturan yang banyak di sini! Bagian dari kesenangan. : (Quines Ex 0 karakter, dll.) P
Doorknob
@Manishearth Ya, apa yang Doorknob katakan. Jika Anda tidak ingin aturan bengkok, Anda harus menyertakan aturan yang tidak membengkokkan aturan itu. Karenanya mengapa tantangan "reverse quine" dan "mirror quine" memiliki aturan terhadap palindrom dan quine yang lebih pendek dari 2 karakter.
Iszi
4

perl

#!/usr/bin/perl
$_=<<'the source';eval $_;

          #
         #*#
        print
       "#!/u".
      "sr/bin".
     "/perl \n".
    "\$_=<<'the".
   " source';eva".
  "l \$_;\n${_}th".
 "e source\n";# Mery 
#Christmas to all !!!
         ###
         ###
         #*#

the source
Hildred
sumber
4

Ini yang kecil di GolfScript :

   {
  ".~  
 "2/~\
+@@2$*}.
   ~

Perhatikan bahwa kode di atas mencakup dua karakter spasi di akhir baris kedua dari atas; ruang-ruang itu penting untuk operasi yang benar. Selain itu, kode harus disimpan menggunakan LFumpan gaya Unix ( ), bukan gaya Windows CR+ LF.


Berikut ini yang sedikit lebih besar (dan kurang sensitif terhadap ruang putih), termasuk pesan yang meriah:

     {
    " "
   MERRY
  5*n\+\n
 CHRISTMAS
".~"+2$*1>}
     .
     ~

Fitur yang agak menarik adalah bahwa kata-kata MERRYdan CHRISTMASbukan string literal, meskipun mereka adalah no-ops, dan disalin ke output bersama dengan blok kode yang mengelilinginya.

Ilmari Karonen
sumber