Рождественский куайн!


10

На языке по вашему выбору напишите программу, которая оформлена в форме рождественской елки, которая печатает себя в той же форме.

Что не разрешено:

  • Распечатка исходного файла
  • Код, который является ничем иным, как утверждениями, которые отражаются интерпретатором, поскольку они являются литералами (например, просто используя древовидную башню списков в Python)

«Распечатка исходного файла» не допускается, но разрешено ли чтение исходного кода (не из файла) и его печать? Если это не так, то с Befunge это практически невозможно. : /
Джастин

Ответы:


16

JavaScript

«Звезда» может быть слишком большой для дерева ...

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

Нули являются безделушками и выглядят лучше всего в редакторе:

Ура для подсветки синтаксиса!

Вывод в инструментах разработчика Chrome


3
Хороший трюк с шарами!
Manishearth

2
Я люблю включение "Мы желаем вам счастливого Рождества!"
Изи

11

Рубин

Вы никогда не говорили, что мы не можем использовать доступ к сети ...: D

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

Выводит себя дословно.

Да, я мог бы использовать сокращение URL, но это сделало бы это менее очевидным и забавным: P Также мне нужно было что-то, чтобы занять место; иначе дерево было бы крошечным.

Выполните так:

ruby -ropen-uri christmasquine.rb

5
На мой взгляд, вы обманули, но вы правы насчет правил. Превзойденный дверной ручкой. Во всяком случае, вот ваше возражение, что заставило меня улыбнуться :)
Manishearth

1
@Manishearth Да, мы много здесь нарушаем правила ! Часть веселья. : P (например, 0 символов quines и т. Д.)
дверная ручка

@ Manishearth Да, что сказала Дверная ручка. Если вы не хотите, чтобы изгибалось правило, вам нужно включить правило против его изменения. Следовательно, почему в последних испытаниях «обратная квина» и «зеркальная квина» были введены правила против палиндромов и квин не короче 2 символов.
Изи

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

Вот крошечный в GolfScript :

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

Обратите внимание, что приведенный выше код содержит два пробела в конце второй строки сверху; эти места необходимы для правильной работы. Кроме того, код должен быть сохранен с использованием LFперевода строки Unix-style ( ), а не Windows-style CR+ LF.


Вот немного больше (и менее чувствительный к пробелам), включая праздничное сообщение:

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

Небольшая интересная особенность заключается в том, что слова MERRYи CHRISTMASне являются строковыми литералами, хотя они не являются операционными и копируются в вывод вместе с окружающим их блоком кода.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.