Задача: создать следующий вывод, используя как можно меньше символов:
_ _ _ _ _ _ _
| | | | ___| | | ___ __ _____ _ __| | __| | |
| |_| |/ _ \ | |/ _ \ \ \ /\ / / _ \| '__| |/ _` | |
| _ | __/ | | (_) | \ V V / (_) | | | | (_| |_|
|_| |_|\___|_|_|\___( ) \_/\_/ \___/|_| |_|\__,_(_)
|/
Правила и ограничения:
Вы не можете использовать FIGLet или любые другие подобные инструменты. (В противном случае,
figlet Hello, world!
было бы тривиальным и в значительной степени непобедимым решением.)Ваша программа должна состоять полностью из печатных символов ASCII - в частности, кодовые точки 9 (TAB), 10 (LF) и 32 - 126. (Если ваш язык / операционная система требует разрывов строк CRLF, вы можете использовать их вместо простых LF.) Да это, к сожалению, дисквалифицирует любой язык, который требует не-ASCII символов (или нетекстовых данных) как часть его синтаксиса.
Вывод должен выглядеть точно так же, как в примере выше. Однако вы можете добавить лишние пробелы вокруг вывода, если хотите. Вы можете принять 8-символьный интервал между табуляциями (или настройку по умолчанию для выбранной вами платформы, если она соответствует).
Ps. Чтобы установить паритет, я предложил решение Perl с 199 символами. Я пока не буду публиковать это, если кто-то придумает это самостоятельно. (Кроме того, это немного глупо.) Конечно, это не должно отговаривать вас от публикации собственного решения, даже если оно дольше.
Обновление: Теперь, когда Хэн побил его одним символом, вот мое дерзкое решение Perl с 199 символами:
use Compress'Zlib;say uncompress unpack u,'M>-I]BT$*`S$,`^]YQ=R:0,&_Z<DP?8@?WVQJ]E2J"%E$$@)R(/(/MCJ*\U!OM`Z#=5`4Y>6M=L\L%DMP&DB0V.4GQL&OOGB$4:%`4TT4!R8O-Z(^BTZWNV?>F86K:9+""-35*-LNC:T^D:_$#%^`";"DD0'
Это очень похоже на решение DC (и все другие решения на основе zlib / gzip на разных языках), за исключением того, что я использовал uuencoding вместо base64 для сжатого текста и некоторые другие мелкие уловки игры в гольф.
Обновление 2 : я думаю, что пришло время официально признать победителя. Первое место занимает PHP-код konsolenfreddy , поскольку, несмотря на количество символов, он является самым коротким из представленных на данный момент. Фактически, в сочетании с оптимизированным потоком DEFLATE из моего Perl-кода из 199 символов получается еще более короткое решение из 176 символов:
<?=gzinflate(base64_decode("fYtBCgMxDAPvecXcmkDBv+nJMH2IH99savZUqghZRBICciDyD7Y6ivNQbwOg3VQFOXlrXbPLBZLcBpIkNjlJ8bBr754hFGhQFNNFAcmLzeiPotOt7tn3plq2mSwgjU1SjbLo2tPpGvxAxfgA"));
Тем не менее, я думаю, что Хан заслуживает особого почетного упоминания за то, что он так близко подошел без использования каких-либо предварительно написанных инструментов декомпрессии. Поздравляю вас обоих, и с Новым годом всех!