Quine di Natale!


10

Nella lingua che preferisci, scrivi un programma che è organizzato a forma di un albero di Natale che si stampa nella stessa forma.

Cosa non è permesso:

  • Stampa del file sorgente
  • Codice che non è altro che dichiarazioni che vengono ripetute da un interprete in virtù del fatto che sono letterali (ad esempio, solo usando una torre di liste a forma di albero in pitone)

La "Stampa del file sorgente" non è consentita, ma è consentita la lettura del codice sorgente (non dal file) e la stampa? In caso contrario, questo è praticamente impossibile con Befunge. : /
Justin il

Risposte:


16

JavaScript

La "stella" potrebbe essere un po 'troppo grande per l'albero ...

        (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!'
            })()

Gli zero sono bagattelle e sembrano migliori nell'editor:

Evviva l'evidenziazione della sintassi!

Output negli strumenti per sviluppatori di Chrome


3
Bel trucco con le bagattelle!
Manishearth,

2
Adoro l'inclusione di "Ti auguriamo un buon Natale!"
Iszi,

11

Rubino

Non hai mai detto che non potevamo usare l'accesso alla rete ...: D

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

Si emette letteralmente.

Sì, avrei potuto usare un accorciatore di URL, ma ciò avrebbe reso meno ovvio e divertente: P Inoltre avevo bisogno di qualcosa per occupare spazio; altrimenti l'albero sarebbe minuscolo.

Eseguire in questo modo:

ruby -ropen-uri christmasquine.rb

5
Nella mia mente hai imbrogliato, ma hai ragione sulle regole. Superato in astuzia da una maniglia. Comunque, ecco il tuo voto, per avermi fatto sorridere :)
Manishearth

1
@Manishearth Sì, pieghiamo molto le regole qui! Parte del divertimento : P (Es. 0 caratteri quines, ecc.)
Maniglia della porta

@Manishearth Sì, quello che ha detto Doorknob. Se non si desidera che una regola venga piegata, è necessario includere una regola per non piegarla. Ecco perché le ultime sfide "reverse quine" e "mirror quine" avevano regole contro i palindromi e le quine più brevi di 2 personaggi.
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

Eccone uno piccolo in GolfScript :

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

Si noti che il codice sopra include due caratteri di spazio alla fine della seconda riga dall'alto; quegli spazi sono essenziali per il corretto funzionamento. Inoltre, il codice deve essere salvato utilizzando gli LFavanzamenti di riga in stile Unix ( ), non in stile Windows CR+ LF.


Eccone uno leggermente più grande (e meno sensibile agli spazi), incluso un messaggio festivo:

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

Una caratteristica leggermente interessante è che le parole MERRYe CHRISTMASnon sono letterali stringa, anche se sono non-op, e vengono copiate nell'output insieme al blocco di codice che le circonda.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.