挑战:使用尽可能少的字符产生以下输出:
_ _ _ _ _ _ _
| | | | ___| | | ___ __ _____ _ __| | __| | |
| |_| |/ _ \ | |/ _ \ \ \ /\ / / _ \| '__| |/ _` | |
| _ | __/ | | (_) | \ V V / (_) | | | | (_| |_|
|_| |_|\___|_|_|\___( ) \_/\_/ \___/|_| |_|\__,_(_)
|/
规则和限制:
您可能不使用FIGLet或任何类似工具。(否则,
figlet Hello, world!
这将是一个琐碎且几乎无与伦比的解决方案。)您的程序必须完全由可打印的ASCII字符组成-特别是代码点9(TAB),10(LF)和32 –126。(如果您的语言/操作系统要求使用CRLF换行符,则可以使用这些字符来代替普通的LF。)是,令人遗憾的是,这取消了任何需要非ASCII字符(或非文本数据)作为其语法一部分的语言的资格。
输出必须与上面的示例完全相同。但是,如果需要,可以在输出周围包括多余的空格。您可以假设制表符间隔为 8个字符(或所选平台的本机默认设置,如果该设置为一致的话)。
附言 为了达到标准,我想出了一个199个字符的Perl解决方案。不过,如果有人独立提出来,我不会发布。(而且,这很俗气。)当然,这不会阻止您发布自己的解决方案,即使它更长。
更新:现在,han击败了一个字符,这是我俗气的199字符Perl解决方案:
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:我认为是时候正式接受获胜者了。首先是konsolenfreddy的PHP代码,因为尽管算上字符数,但它是迄今为止提交的最短的代码。实际上,将其与我的199个字符的Perl代码中的优化的DEFLATE流结合使用,可以得到更短的176个字符的解决方案:
<?=gzinflate(base64_decode("fYtBCgMxDAPvecXcmkDBv+nJMH2IH99savZUqghZRBICciDyD7Y6ivNQbwOg3VQFOXlrXbPLBZLcBpIkNjlJ8bBr754hFGhQFNNFAcmLzeiPotOt7tn3plq2mSwgjU1SjbLo2tPpGvxAxfgA"));
但是,我确实认为han值得特别荣誉,因为他无需使用任何预先编写的减压工具就可以如此接近。祝贺你们,也祝大家新年快乐!