Navidad quine!

10

En el idioma que elija, escriba un programa que esté organizado en forma de árbol de Navidad que se imprima en la misma forma.

Lo que no está permitido:

  • Imprimir el archivo fuente
  • Código que no es más que declaraciones que se hacen eco por un intérprete en virtud de que son literales (por ejemplo, simplemente usando una torre de listas en forma de árbol en Python)
Manishearth
fuente
No está permitido "imprimir el archivo fuente", pero ¿está permitido leer el código fuente (no del archivo) e imprimirlo? Si no es así, esto es prácticamente imposible con Befunge. : /
Justin

Respuestas:

16

JavaScript

La 'estrella' podría ser demasiado grande para el árbol ...

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

Los ceros son adornos y se ven mejor en el editor:

¡Hurra por resaltar la sintaxis!

Salida en herramientas para desarrolladores de Chrome

Dom Hastings
fuente
3
Buen truco con las bolas!
Manishearth
2
Me encanta la inclusión de "¡Te deseamos una feliz Navidad!"
Iszi
11

Rubí

Nunca dijiste que no podíamos usar el acceso a la red ...: D

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

Se genera literalmente.

Sí, podría haber usado un acortador de URL, pero eso lo habría hecho menos obvio y divertido: P También necesitaba algo para ocupar espacio; de lo contrario, el árbol sería pequeño.

Ejecutar así:

ruby -ropen-uri christmasquine.rb
Pomo de la puerta
fuente
55
En mi mente hiciste trampa, pero tienes razón sobre las reglas. Superado por un picaporte. De todos modos, aquí está tu voto a favor, por hacerme sonreír :)
Manishearth
1
@Manishearth Sí, nos doblar las reglas un montón aquí! Parte de la diversion. : P (Ej. 0 caracteres quines, etc.)
Pomo de la puerta
@Manishearth Sí, lo que dijo Doorknob. Si no desea que se doble una regla, debe incluir una regla contra la flexión de esa regla. Por eso los últimos desafíos de "quine inversa" y "quine espejo" tenían reglas contra palíndromos y quines de menos de 2 caracteres.
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
fuente
4

Aquí hay uno pequeño en GolfScript :

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

Tenga en cuenta que el código anterior incluye dos caracteres de espacio al final de la segunda línea desde la parte superior; esos espacios son esenciales para el correcto funcionamiento. Además, el código debe guardarse utilizando saltos de línea estilo Unix ( LF), no estilo Windows CR+ LF.


Aquí hay uno un poco más grande (y menos sensible al espacio en blanco), que incluye un mensaje festivo:

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

Una característica ligeramente interesante es que las palabras MERRYy CHRISTMASno son literales de cadena, aunque no son opcionales, y se copian en la salida junto con el bloque de código que las rodea.

Ilmari Karonen
fuente