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)

"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


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

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

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.

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.