Weihnachtsquine!

10

Schreiben Sie in der Sprache Ihrer Wahl ein Programm, das in Form eines Weihnachtsbaums angeordnet ist und sich selbst in derselben Form druckt.

Was ist nicht erlaubt:

  • Quelldatei ausdrucken
  • Code, der nichts anderes ist als Aussagen, die von einem Interpreten als Literale wiedergegeben werden (z. B. nur mit einem baumförmigen Turm aus Listen in Python)
Manishearth
quelle
"Ausdrucken der Quelldatei" ist nicht erlaubt, aber ist das Lesen des Quellcodes (nicht aus der Datei) und das Drucken erlaubt? Ist dies nicht der Fall, ist dies mit Befunge praktisch unmöglich. : /
Justin

Antworten:

16

JavaScript

Der 'Stern' könnte etwas zu groß für den Baum sein ...

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

Die Nullen sind Kugeln und sehen im Editor am besten aus:

Ein Hoch auf die Syntaxhervorhebung!

Ausgabe in Chrome Developer Tools

Dom Hastings
quelle
3
Schöner Trick mit den Kugeln!
Manishearth
2
Ich liebe die Aufnahme von "Wir wünschen Ihnen frohe Weihnachten!"
Iszi
11

Rubin

Sie haben nie gesagt, dass wir keinen Netzwerkzugriff verwenden können ...: D.

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

Gibt sich wörtlich aus.

Ja, ich hätte einen URL-Shortener verwenden können, aber das hätte es weniger offensichtlich und amüsant gemacht: P Außerdem brauchte ich etwas , um Platz zu beanspruchen. sonst wäre der Baum winzig.

Führen Sie Folgendes aus:

ruby -ropen-uri christmasquine.rb
Türknauf
quelle
5
In meinen Gedanken hast du betrogen, aber du hast Recht mit den Regeln. Von einem Türknauf überlistet. Wie auch immer, hier ist deine Gegenstimme, dass du mich zum Lächeln gebracht hast :)
Manishearth
1
@Manishearth Yep, wir die Regeln ein biegen viel hier! Ein Teil des Spaßes. : P (Bsp. 0 Zeichen Quines usw.)
Türknauf
@ Manishearth Ja, was Doorknob gesagt hat. Wenn Sie nicht möchten, dass eine Regel gebogen wird, müssen Sie eine Regel gegen das Biegen dieser Regel einfügen. Daher hatten die neuesten "Reverse Quine" - und "Mirror Quine" -Herausforderungen Regeln gegen Palindrome und Quines, die kürzer als 2 Zeichen waren.
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
quelle
4

Hier ist eine winzige in GolfScript :

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

Beachten Sie, dass der obige Code zwei Leerzeichen am Ende der zweiten Zeile von oben enthält. Diese Räume sind für den korrekten Betrieb unerlässlich. Außerdem sollte der Code mit LFZeilenvorschüben im Unix-Stil ( ) und nicht mit Windows-Stil CR+ gespeichert werden LF.


Hier ist eine etwas größere (und weniger weißraumempfindliche), einschließlich einer festlichen Botschaft:

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

Ein leicht Interessant ist , dass die Worte MERRYund CHRISTMASnicht Stringliterale, obwohl sie sind No-ops, und werden zusammen mit dem Codeblock um sie herum in die Ausgabe kopiert.

Ilmari Karonen
quelle