为了纪念亚当·韦斯特


90

亚当·韦斯特(Adam West)去世了,我想在此纪念他在PPCG上的记忆,尽管我怀疑他知道我们的存在。尽管这个人以许多不同的事物而闻名,但没有比他作为原始蝙蝠侠的角色更突出的了。我将永远记得我的继父至今仍在观看老式的蝙蝠侠和罗宾。这个挑战本质上是简单的,根本不符合亚当·韦斯特这个复杂的人。但是,这是我能想到的最好的方法,因为这是该男子职业生涯中最具标志性的形象。


我想早些发布,但是我在等待有人提出更好的建议。


输出以下内容(带或不带尾随空格/换行符):

           *                         *
       ****          *     *          ****
     ****            *******            ****
   ******            *******            ******
  *********         *********         *********
 ***********************************************
*************************************************
*************************************************
*************************************************
 ***********************************************
  *****       *********************       *****
    ****       ***    *****    ***       ****
       **       *      ***      *       **

这是,最低字节数将获胜。


7
您应该禁止编码字符串。真的不好玩!
sergiol

7
他不是原始的蝙蝠侠。这项荣誉属于刘易斯·威尔逊。
毛茸茸的

42
当我看到标题时,我以为输出将是“ na-na-na-na-na-na-na-na-na-na-na-na-na-na-na-na”。
D Krueger

3
@DKrueger:在另一个问题中提出:)
Olivier Dulac

4
为什么不从去年开始?嘉莉·费雪,王子,大卫·鲍伊和艾伦·里克曼!
caird coinheringaahing

Answers:


47

果冻,44 字节

“¡©İ'¹!ðkW>ṅṙẏṙlœf:ߌÆ@Ƥ’b25o99Jx$ị⁾ *s25ŒBY

在线尝试!

这个怎么运作

“¡©İ'¹!ðkW>ṅṙẏṙlœf:ߌÆ@Ƥ’

这是一个数字文字。在Jelly的代码页中,所有字符都替换为其从1开始的索引,结果被解释为以250为基的双射整数,得出

58616171447449697510361193418481584558895594063391402

接下来,b25将该整数转换为以25为底并用99o99替换0,得到

11 1 20 4 10 1 8 4 12 4 3 6 12 4 2 9 9 5 1 99 1 24 2 5 7 11 4 4 7 3 4 3 7 2 7 1 6 2

Jx$替换Ĵ 基-25数字ÑÑ副本Ĵ,得到

1 1 1 1 1 1 1 1 1 1 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 7 7 7 7 7 7 7 7 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 11 11 11 12 12 12 12 12 12 13 13 13 13 13 13 13 13 13 13 13 13 14 14 14 14 15 15 16 16 16 16 16 16 16 16 16 17 17 17 17 17 17 17 17 17 18 18 18 18 18 19 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 23 23 24 24 24 24 24 25 25 25 25 25 25 25 26 26 26 26 26 26 26 26 26 26 26 27 27 27 27 28 28 28 28 29 29 29 29 29 29 29 30 30 30 31 31 31 31 32 32 32 33 33 33 33 33 33 33 34 34 35 35 35 35 35 35 35 36 37 37 37 37 37 37 38 38

现在,ị⁾ *索引到字符对。索引基于1且是模块化的,因此奇数被空格代替,偶数被星号取代。这产生

           *                    ****          *        ****            ****   ******            ****  *********         ***** *************************************************************************************************** ************************  *****       ***********    ****       ***    ***       **       *      **

s25将结果切成长度为25的块。如果我们将每个块写在自己的行上,我们得到

           *             
       ****          *   
     ****            ****
   ******            ****
  *********         *****
 ************************
*************************
*************************
*************************
 ************************
  *****       ***********
    ****       ***    ***
       **       *      **

所述弹跳原子ŒB通过附加一个反转副本而不其第一个字符palindromizes每个组块,得到

           *                         *           
       ****          *     *          ****       
     ****            *******            ****     
   ******            *******            ******   
  *********         *********         *********  
 *********************************************** 
*************************************************
*************************************************
*************************************************
 *********************************************** 
  *****       *********************       *****  
    ****       ***    *****    ***       ****    
       **       *      ***      *       **       

最后,Y介绍实际的换行符。


1
而且我认为“QƤḣọḲ£¿ẆịµñẒṢƊ¬ƒỤ2ỴÐ,ịṁ&Ḅ<ḋsḳn.⁷ṛḃṡ⁾6bḋeṁ’ṃ⁾ *s25ŒBY足够短,只有53个字节...
Egg the Outgolfer

我尝试了14种不同的方法,然后通过反复试验终于做到了。在我自己尝试之前,不理解“用99代替0”的意思。
Magic Octopus Urn

156

Wordfuck5761 2686字节

我想将他的名字用作源代码会给Adam West带来一些荣誉。

adam west adam west adam_wes t_a dam_we st_a dam_ west adam west adam west adam west_ad am_west_a dam_we st ad am we st ad am we st ad am west_a dam_we st_a dam_ west_ada m_w est ada m_w est ada m_west_ adam west_a dam_west_ adam_we st_ ad am_west ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am_wes t_ adam_w est_ adam west adam west adam west adam west adam we st_adam west_ad am we st ad am we st adam_w es t_ ad am west_ad am we st ad am we st ad am we st_ada m_ west_ad am we st ad am west_a da m_west_ ad am we st ad am we st ad am west_a da m_ we st adam_w es t_adam_ west_ad am we st ad am west_a da m_ we st adam_we st ad am we st ad am we st ad am we st_ada m_ we st ad am we st adam_we st ad am we st ad am we st ad am we st_ada m_ we st ad am_wes t_ adam_we st_adam we st ad am_wes t_ ad am we st ad am_west ad am we st ad am we st ad am we st adam_w es t_ ad am we st ad am_west ad am we st ad am we st ad am we st adam_w es t_ ad am we st adam_w es t_adam_ west_ad am we st_ada m_ we st ad am we st ad am west_ad am we st ad am we st ad am west_a da m_ we st ad am we st ad am_west ad am we st ad am we st ad am_wes t_ ad am we st ad am we st adam_w es t_adam_ west_ad am west_a da m_ we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st_ada m_ west_ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am west_a da m_west_ ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am_wes t_ adam_we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st adam_w es t_adam_ west_ad am west_a da m_ we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st ad am we st_ada m_ west_ad am_west ad am west_a da m_ we st ad am_west ad am we st ad am we st_ada m_ we st ad am we st ad am we st ad am we st ad am we st ad am west_ad am we st ad am we st adam_w es t_ ad am we st_ada m_ west_ad am_west ad am we st adam_w es t_ ad am west_ad am we st ad am we st adam_w es t_ ad am_west ad am we st adam_w es t_ ad am we st_adam we st ad am west_a da m_ we st_adam we st ad am we st ad am_wes t_ ad am we st_ada m_ west_ad am_west ad am we st ad am we st_ada m_ we st_adam we st ad am we st ad am_wes t_ adam_we st ad am we st ad am_wes t_ ad am west_ad am we st ad am we st_ada m_ west_ad am we st ad am we st adam_w es t!

在线尝试! (转脑子)

亚当·韦斯特唱歌 (感谢@carusocomputing)


69
这真糟糕。我喜欢它。
TheWanderer

25
嗯 是。还不错,但我想你忘记1号线。下划线
MATEEN Ulhaq

2
有办法测试吗?
毛茸茸的

4
@Wilf欢迎来到PCCG!我们并没有真正在此站点上竞争,这当然不是获胜的解决方案,但是它以搞笑和挑战为主题,因此获得了好评,因此更多的人可以使用它。希望尽快支持您的答案!
Uriel

3
@Shaggy 在线尝试!(STDERR)
ADAM

67

Python中,530个 529 528 524字节

import zlib as Holy
B=list("NNAAAnAAnnAnaAannnaaaaNaAAnNanAaAanNNaNNaNaanNNANanNNANaAnAaANANAAnAaANNnAanAaNnAaAANNAaAnNANAaaANNAanAaNaNNNAaNNanAAnNNnaaaNANANANnnaaaNaaAAAANaNaNaNAnNAAAAaaaaANAaNnnAaAaNAAaANNnaaNnNnaannaaAaananannNnAAAAAanAananANAnaAAnANAAaaaAaaanaaAAaanNAnanAAnnnANAnNAnnAnnnanaNNaaaNaNNaAAnNAaaANNNANAnAaaAaNaANnNNNaaAanaaaanaaaaaAaAaNnNnnaAnANaNnnANanNA")
A=dict(N='11',A='01',n='10',a='00')   
T=""
POP=BIFF=POW=OOF=lambda:A[B.pop()]
while B:T+=chr(int(POP()+POW()+BIFF()+OOF(),2))
print Holy.decompress(T)

5
哦,上帝,我好一阵子没笑过。NAanANANaNANaNAANnAnaNANanaNA
魔术八爪鱼

9
在代码高尔夫中,我们应该减少字节数,但是您的输入相当繁琐。;)
下午17年

34
有时,必须为更大的利益而牺牲。
rrauenza

1
这听起来像蝙蝠侠会说的。;)我必须承认我觉得B.pop(0)有些烦人。为什么不反转,B以便可以使用效率更高(或更短)的产品B.pop()?在pop(0)有剩余的所有列表元素向下移动一个插槽。当然,它以C速度发生,但是它的效率仍然不如从字符串末尾弹出。
下午17年

5
该别名POPBIFFPOWOOF让我吐出什么,我喝我的显示器上。谢谢哈哈。+1。
rayryeng

21

JavaScript(ES6),148 146字节

_=>`n2zh2
f8l2b2l8
b8pep8
7cpepc
5ijiji
3yyq
0
0
0
3yyq
5afy8fa
98f69a96f8
f4f2d6d2f4`.replace(/./g,c=>'* '[(n=parseInt(c,36))&1].repeat(n/2||49))

演示版


12

Python,149142字节

@ PM2Ring节省了7个字节

for l in"b1d 74a13 54c4 36c4 2995 1o 0p 0p 0p 1o 257b 447343 727162".split():x=''.join(s*int(k,36)for s,k in zip(' *'*3,l));print(x+x[-2::-1])

真好 您可以x=''.join(s*int(k,36)for s,k in zip(' *'*3,l))
删除

别担心。我设法编写了一个更短的Python版本。;)
下午17年

1
@ PM2Ring您获得了我的+1
Uriel

12

MATL61 59字节

' *'60:'*u9|K9j[~F9R,>ejc4Q,7;F\1l_=7sFR'F11:ZaY"13e)25ZvZ)

在线尝试!

这个怎么运作

这使用以下标准技术:

  • 由于图像是水平对称的,因此仅对左半部分(包括中心列)进行编码。
  • 图像以列优先顺序线性化(从下到上,然后跨过),并且生成的序列经过游程编码
  • 产生的游程长度取值从111,因此游程长度的序列由base转换从base 压缩11到base 94(可打印的ASCII字符,单引号除外,这需要转义)。

1
按列优先顺序运行60次,但按行优先顺序运行38次。那会节省任何字节吗?
丹尼斯,

@Dennis问题在于,在这种情况下,游程长度为[1:12 20 24 99],这使得压缩更加困难。我最好的尝试是在60个字节上
Luis Mendo

除了构造确切的集合外,您是否尝试过简单地使用base 25并将0替换为99,例如Y|?我不知道是否有足够的MATL atm来测试它是否实际上更短……
Dennis

@Dennis看起来很有希望。使用集合,[1:24 99]删除了一个字节。如果我使用[0:24](以25为基数),我不知道如何转换099几个字节
Luis Mendo

1
Right Y|在MATL / Octave中不像在Jelly / Python中那样起作用。在后者中,0 or 99收益为99 ...
丹尼斯(Dennis)

7

05AB1E,47个字节

„ *19×S•«M;Ó8ζ?èYÑ?½¨/Ž´.δòÈÖ<•25вт<19ǝ×J13ä€û»

在线尝试!


移植丹尼斯的算法对吗?
暴民埃里克(Erik the Outgolfer)

@EriktheOutgolfer:replace 99 trick从他那里借来的(在直接方式上节省了4个字节)。仍在寻找更好的方法。
Emigna

通过使用.∞而不是-1 €û»(镜像在应用镜像之前先在旧版中隐式加入换行符列表)。我也曾尝试使用₂в代替25в,但不幸的是压缩整数也要长1个字节,因此它不保存任何内容:•2Ø°×á[1∊Œ)’˜Àå<тIÞ‡p5ÉQ•₂в
凯文·克鲁伊森

7

VIM,168个 156字节

:nm N a <C-v><ESC>
:nm A a*<C-v><ESC>
:nm B aY<C-v><ESC>yyp!!rev<C-v><CR>kJh4xo<C-v><ESC>
11NA13NB7N4A10NA3NB5N4A12N4AB3N6A12N4AB2N9A9N5ABN24AB25ABkyyppjN24AB2N5A7N11AB4N4A7N3A4N3AB7N2A7NA6N2ABdd

假设在Unix环境下,rev。我使用一种相当简单的(计数,字符)编码,N和A 分别附加a *,B进行复制和反向。

在实际文件中,用括号括起来的条目替换为它们代表的文字字节。 <C-v>是0x16、0x1b <ESC><CR>0x0d。

在线尝试


我认为不麻烦制作宏“ b”和“ c”,而是直接重新映射它们会更快。:nm N a <C-v><esc>:nm A a*<C-v><esc>
DJMcMayhem

@DJMcMayhem确实如此。出于某种原因,我认为将s保存<C-v>在文件中要比实际困难得多,因此我使用了“回旋”方法,因此可以使用进行测试{ cat foo.vim; echo ':wq'; } | vim out.txt。我不确定为什么<C-v><C-v>昨天没试过。

我很高兴得知您能正常使用!为方便起见,测试vim答案的另一种方法是在线尝试!,它确实使用了我写的esolang,但无论如何还是向后兼容。该-v标志允许您使用vim键描述(如<C-v>和诸如此类)
DJMcMayhem

@DJMcMayhem非常好。谢谢。

你能<NL>代替写<NEWLINE>吗?
L3viathan

7

木炭69 54 52 48字节

E⪪”|↖y{{﹪yc›o”n↗πf>T≔Y¿PN|ωπQβ” ⪫Eιק* μ⌕βλω‖O←

在线尝试!链接是详细版本的代码。编辑:由于仅@ASCII,通过从一个单独的标志切换到循环索引可以节省4个字节,使用(undocumented?)⸿字符可以节省7个字节而对于运行长度编码则可以使用字母节省4个字节。因为AtIndex自动取模,所以又节省了2个字节。由于Map自动创建了索引变量,因此又节省了4个字节。说明:

Print(Map(

外部Map返回一个数组。Print通过在每个元素的一行上打印每个元素来处理此问题,从而避免了必须使用手动Join对其进行处理\n

Split("anb adbke eme fjj y z z z y lhf dedhe cgbhc" " "),

该字符串编码输出的所有半行。交替字母表示*s和空格的数量(a=0用于处理以空格开头的行)。该空间是定界符的方便选择,但也可以很好地进行压缩(x也会压缩到总共55个字节)。每行分别进行处理。(注意:去混音符无法删除压缩字符串和未压缩字符串之间的分隔符,否则代码将具有,可读性。)

Join(Map(i, Times(AtIndex("* ", m), Find(b, l))), w)));

循环遍历每个字母,扩展到适当的*s或空格数。变量m是this的内部循环索引Map,同时l保留字母。然后Join使用预定义的空字符串将结果编入单个字符串w

ReflectOverlap(:Left);

打印完所有行后,将所有内容向左反映,与中间列重叠。

我尝试在一个循环中处理换行符,空格和星号,但实际上这样又花了两个字节:

Print(Join(Map("anb adbke eme fjj y z z z y lhf dedhe cgbhc", Ternary(Equals(" ", i), "\n", Times(AtIndex("* ", k), Find(b, i)))), w));
ReflectOverlap(:Left);

1
+1我真的需要学习木炭(还有Hexagony和Cubix)。我在这里看到三种我最喜欢的编程语言。顺便说一句,我想您已经在计划中,但是您可以添加一个解释吗?
Kevin Cruijssen

@KevinCruijssen嗯,我想即使是冗长的代码也需要澄清一下……够吗?
尼尔

啊,我没注意到TIO包含详细版本tbh。但是,尽管如此,答案本身的解释也不会造成伤害,因此,感谢您抽出宝贵的时间编写该答案。
Kevin Cruijssen

我想学习木炭,但需要一个类似于05AB1E的页面,该页面解释了代码页中每个字符的实际作用而不必深入研究代码。
Magic Octopus Urn

2
@carusocomputing还不错:除了压缩的字符串外,您还拥有普通的字符串(ASCII字符和pilcrow),数字(上标数字),箭头(...箭头),命令(通常为全角大写字母)和运算符(所有内容)其他),因此您可以在Wiki的相应页面上查找它们。
尼尔

6

Clojure,833437字节

几乎就定义而言,Clojure永远不会赢得任何奖项,但是当我期待《蝙蝠侠》的集(相同的蝙蝠时间,同一条蝙蝠频道!)时,我每个星期都在期待。没有时间可以浪费!

快速,罗宾-到蝙蝠REPL!

(defn r[c n](clojure.string/join(repeat n c)))(defn pl[col](loop[i 0 c " "](print(r c (nth col i)))(if(< i (dec (count col)))(recur (inc i) (if (= c " ") "*" " "))(println))))(defn p[](loop[lines [[11 1 25 1][7 4 10 1 5 1 10 4][5 4 12 7 12 4][3 6 12 7 12 6][2 9 9 9 9 9][1 47][0 49][0 49][0 49][1 47][2 5 7 21 7 5][4 4 7 3 4 5 4 3 7 4][7 2 7 1 6 3 6 1 7 2]] i 0] (pl (nth lines i))(if (< i (dec (count lines)))(recur lines (inc i))nil)))

非高尔夫版本:

(defn repstr [c n]
  (clojure.string/join (repeat n c)))

(defn print-bat-signal-line [col]
  (loop [i  0
         c  " "]
    (print (repstr c (nth col i)))
    (if (< i (dec (count col)))
      (recur (inc i) (if (= c " ") "*" " "))
      (println))))

(defn print-bat-signal []
  (loop [lines [[11 1 25 1]  ; spaces asterisks spaces asterisks
                [7 4 10 1 5 1 10 4]
                [5 4 12 7 12 4]
                [3 6 12 7 12 6]
                [2 9 9 9 9 9]
                [1 47]
                [0 49]
                [0 49]
                [0 49]
                [1 47]
                [2 5 7 21 7 5]
                [4 4 7 3 4 5 4 3 7 4]
                [7 2 7 1 6 3 6 1 7 2]]
        i      0]
    (print-bat-signal-line (nth lines i))
    (if (< i (dec (count lines)))
      (recur lines (inc i))
      nil)))

RIP Adam West。不管这些表演多么荒谬,我们这些小孩子都向您致敬。


虽然没有打高尔夫球,但仍然胜过猫的回答。
Magic Octopus Urn

高尔夫版本添加。如果可以的话,我将其侧向旋转以使其看起来像是在爬墙。:-)
Bob Jarvis

6

C(gcc),191字节

#define x 16777215
char*b,*c,a[50];l[]={4096,122888,491535,2064399,4186143,x/2,x,x,x,x/2,4064255,983495,98435,0},*p=l;main(){for(;*p;p++,puts(a))for(b=c=a+23;b>=a;*p/=2)*b--=*c++=" *"[*p&1];}

在线尝试!


6

各种解决方案均使用游程长度编码,并具有多种技术来对RLE数据进行编码。

Python 3中,125个 121字节

此版本使用bytes字符串来存储数据。

s=''
for c in b'<)@4/:),0/>/,3>/*981(WYYY(W*14=./4-.-4+4)2+':s+=' *'[c%2]*(c//2-19);s*=len(s)<25or print(s+s[-2::-1])or 0

让它s是一串星星或空格。然后字节n编码s

n = 38 + 2*len(s) + (s[0]=='*')

Python 2中,133个 126字节

此版本使用字母编码。字母值确定输出字符串的长度,字母的大小写确定它是由空格还是星号组成。

s=''
for c in'kAmgDjAceDlDcFlDbIiEaXYYYaXbEgKdDgCdCgBgAfB':
 s+=' *'[c<'a']*(int(c,36)-9)
 if len(s)>24:print s+s[-2::-1];s='' 

我原来的133字节Python 2解决方案。

此版本使用零长度字符串,因此可以轻松在星号和空格字符串之间交替。

s=''
for c,n in zip(24*' *','b1d074a13054c436c429951o0p0p0p1o257b447343727162'):
 s+=c*int(n,36)
 if len(s)>24:print s+s[-2::-1];s=''

只是为了好玩,这是一个使用字母编码的单线。

Python 2,148字节

print'\n'.join(''.join(s+s[-2::-1])for s in zip(*[iter(''.join(' *'[c<'a']*(int(c,36)-9)for c in'kAmgDjAceDlDcFlDbIiEaXYYYaXbEgKdDgCdCgBgAfB'))]*25))

为了获得更多乐趣,这是Conway的《人生游戏》中的一种模式,该模式 可以生成蝙蝠侠徽标的版本。我必须将每一行加倍以使宽高比与文本版本大致相同。这种模式并没有真正计算的标志(虽然它可以在生活中的计算-这是图灵完备),它只是重播它从内存中循环,所以我想我不能发表它作为一个代码高尔夫项目(尽管我确实是使用几年前编写的Python脚本创建的。;)

它以相当标准的RLE格式编码,大多数Life引擎都可以加载。如果您没有GoL程序(例如Golly),则可以使用此在线Life引擎在线查看该程序,该引擎可以导入Life RLE文件。这是该Life模式的PNG版本,某些Life程序(包括Golly)可以从PNG和其他各种图像文件格式加载Life模式。


6

T-SQL,283276222字节

SELECT CAST(DECOMPRESS(CAST('H4sIAAAAAAAEAFNQgAMtBVxAi5cLxgICdB3IAkAAVYuqEsLHIgRWjV0KqxBIvZYWujQeEaAGLdIALxeJGuinhXSvQEMCPVSQAbIcJPJQReGSSHxU9WAeSppAqEMoBwCfudAGawIAAA=='as XML).value('.','varbinary(max)'))AS varchar(max))

通过此处发布的方法,对原始蝙蝠侠弦乐进行 GZIP压缩。这仅在SQL 2016及更高版本中有效。

对于早期的SQL版本,请使用我的先前方法(276 bytes):

DECLARE @ CHAR(999)=REPLACE(REPLACE(REPLACE('PRINT SPACE(11#1$25#1&$7#4$10#1$5#1$10#4&$5#4$12#7$12#4&$3#6$12#7$12#6&$2#9$9#9$9#9&$1#47&#49&#49&#49&$1#47&$2#5$7#21$7#5&$4#4$7#3$4#5$4#3$7#5&$7#2$7#1$6#3$6#1$7#2)','#',')+REPLICATE(''*'','),'$',')+SPACE('),'&',')+CHAR(13')EXEC(@)

基本上,我使用以下方法手动编码一个巨大的字符串,该字符串决定下一步要打印什么:

  • #7 被替换 +REPLICATE('*',7)
  • $4 被替换 +SPACE(4)
  • & 被替换 +CHAR(13)

替换后,完整的958个字符串看起来像(在Batman符号的每一行都有换行符:

PRINT 
SPACE(11)+REPLICATE('*',1)+SPACE(25)+REPLICATE('*',1)+CHAR(13)
+SPACE(7)+REPLICATE('*',4)+SPACE(10)+REPLICATE('*',1)+SPACE(5)+REPLICATE('*',1)+SPACE(10)+REPLICATE('*',4)+CHAR(13)
+SPACE(5)+REPLICATE('*',4)+SPACE(12)+REPLICATE('*',7)+SPACE(12)+REPLICATE('*',4)+CHAR(13)
+SPACE(3)+REPLICATE('*',6)+SPACE(12)+REPLICATE('*',7)+SPACE(12)+REPLICATE('*',6)+CHAR(13)
+SPACE(2)+REPLICATE('*',9)+SPACE(9)+REPLICATE('*',9)+SPACE(9)+REPLICATE('*',9)+CHAR(13)
+SPACE(1)+REPLICATE('*',47)+CHAR(13)
+REPLICATE('*',49)+CHAR(13)
+REPLICATE('*',49)+CHAR(13)
+REPLICATE('*',49)+CHAR(13)
+SPACE(1)+REPLICATE('*',47)+CHAR(13)
+SPACE(2)+REPLICATE('*',5)+SPACE(7)+REPLICATE('*',21)+SPACE(7)+REPLICATE('*',5)+CHAR(13)
+SPACE(4)+REPLICATE('*',4)+SPACE(7)+REPLICATE('*',3)+SPACE(4)+REPLICATE('*',5)+SPACE(4)+REPLICATE('*',3)+SPACE(7)+REPLICATE('*',5)+CHAR(13)
+SPACE(7)+REPLICATE('*',2)+SPACE(7)+REPLICATE('*',1)+SPACE(6)+REPLICATE('*',3)+SPACE(6)+REPLICATE('*',1)+SPACE(7)+REPLICATE('*',2)

将其作为动态SQL执行,产生以下输出:

           *                         *
       ****          *     *          ****
     ****            *******            ****
   ******            *******            ******
  *********         *********         *********
 ***********************************************
*************************************************
*************************************************
*************************************************
 ***********************************************
  *****       *********************       *****
    ****       ***    *****    ***       *****
       **       *      ***      *       **

5

PHP,137字节

<?=gzinflate(base64_decode(U1CAAy0FXECLC8YAAnQNyAJAwIVFIYSPRYgLLkWEYrByLS10WTwiXAgmcYCLRPV00kGyN6BhgB4eyABZjgstyqAsuDpU5YjEgJIOEKoQigE));

在线尝试!

PHP,177字节

foreach(["9zojk",a2878,aa4nb,b7u9z,chbf3,eze2n,jz6rj,jz6rj,jz6rj,eze2n,cepdr,ako8z,a1pc1]as$v)echo$t=strtr(substr(base_convert($v,36,2),1),10,"* "),"* "[$k++<2],strrev($t),"\n";

在线尝试!

PHP,179字节

for(;$o=ord(kAlgDjAbeDlCcFlCbIiDaWXXXaWbEgJdDgCdBgBgAfA[$i++]);($x+=$s)%24?:print$r.("* "[$k++<2]).strrev($r)."\n".$r="")$r.=strtr(str_repeat($b=+($o>96),$s=$o-64-$b*32),10," *");

在线尝试!


您的第一个示例需要引号
Steven Penny

2
@StevenPenny不,不是。检查了在线试用链接吗?
ovs

1
@StevenPenny在这种情况下,PHP使用不存在的常量对字符串的强制转换。我只抛出Codegolf中允许的Notice Error。而缺少“=”在BASE64结束编码字符串将被自动添加
约尔格Hülsermann

4

Java,296,214字节

打高尔夫球:

()->{String r="";boolean b=1<0;for(int a:";1I1074:151:4054<7<4036<7<6029999901_10a10a10a01_0257E570447345437407271636172".toCharArray()){for(int i=0;i<a-48;++i)r+=(b?'*':' ');if(a<49)r+='\n';else b=!b;}return r;}

取消高尔夫:

public class InHonorOfAdamWest {

  public static void main(String[] args) {
    System.out.println(f(() -> {
      String r = "";
      boolean b = 1 < 0;
      for (int a : ";1I1074:151:4054<7<4036<7<6029999901_10a10a10a01_0257E570447345437407271636172".toCharArray()) {
        for (int i = 0; i < a - 48; ++i) {
          r += (b ? '*' : ' ');
        }
        if (a < 49) {
          r += '\n';
        }
        else {
          b = !b;
        }
      }
      return r;
    }));
  }

  private static String f(java.util.function.Supplier<String> f) {
    return f.get();
  }
}

可以";1I1074:151:4054<7<4036<7<6029999901_10a10a10a01_0257E570447345437407271636172"用于数据,for(char a:x){a=(int)a-48; [...]基本上是将每个数字加48,然后将其转换为等效的ascii char。我相信这将为您节省70-80字节。我也相信将数据硬编码到lamba中也会减少字节。
Magic Octopus Urn

boolean b=false;可以是boolean b=1<0,或者甚至更好,您可以使用an int,也可以i在同一行上组合for的声明;)。
Magic Octopus Urn

1
@carusocomputing谢谢,我没有考虑将其包装在字符串中。您的其中有一些错误的Unicode值,我不得不重新生成它,现在输出正确显示。

由于您不在ifor循环中使用,我认为您可以将其for(int i=0;i++<a-48;)用作for-head。
罗曼·格拉夫(RomanGräf)

3

泡泡糖,75

xxd转储:

00000000: cd92 b501 8050 1043 fb4c 91fa efbf 1f0e  .....P.C.L......
00000010: 2f87 d371 5814 37d3 7c35 4d2b 1826 64f6  /..qX.7.|5M+.&d.
00000020: d8aa 419c 2a11 3e75 ce25 6d1e ee9d 22e0  ..A.*.>u.%m...".
00000030: bb11 f04f 0d7f 2e38 dfc8 6926 3dad 0871  ...O...8..i&=..q
00000040: f316 1071 6db8 fc07 a408 f7              ...qm......

在线尝试


3

Coffeescript(282字节)

t=['6bk','59mw','l2j3','2ghsf','4zg2n','9zldr','jz6rj','4u7zz','165qf','47wj']
[0,1,2,3,4,5,6,6,6,5,7,8,9].map((d)->parseInt(t[d], 36).toString(2).padStart 25, '0').forEach (d)->console.log (d+d.split('').reverse().join('').substring(1)).replace(/0/g, ' ').replace(/1/g,'*')

解释(使用Plain-ol ES6)

  • 像其他提到的一样,图像是对称的,因此我们可以在编码中将其丢掉一半
  • 还重复了几行,因此我们可以在查找表中扔掉每一行以节省一些字节
  • 我们将每条半线转换为二进制(使用0作为空格,将1作为*),并以Javascript(36)中的最高基数对其进行编码,从而得到编码数组。
  • 第一张图采用每行并将其转换回其最终输出半行,并用0填充
  • 第二张地图将每一行与其倒置的一半连接起来(第二次插入中间列),并用空格和* s替换0和1s

var t = [
    '6bk',
    '59mw',
    'l2j3',
    '2ghsf',
    '4zg2n',
    '9zldr',
    'jz6rj',
    '4u7zz',
    '165qf',
    '47wj'
];
[0,1,2,3,4,5,6,6,6,5,7,8,9].map((d) => {
    return parseInt(t[d], 36).toString(2).padStart(25, '0');
})
.forEach((d) => {
    console.log((d + d.split('').reverse().join('').substring(1))
        .replace(/0/g, ' ')
        .replace(/1/g, '*'));
});


很酷的答案!欢迎光临本站!:)
DJMcMayhem

2

V,102字节

i±³ *±± 
³ *± ´*· 
´*±² ´*µ 
´*±² ¶*³ 
µ*¹ ¹*  
²´* Ä3o²µ*jo±±*· µ*  
³*´ ³*· ´*´ 
**¶ *· **· Îæ$vp

在线尝试!

十六进制转储:

00000000: 69b1 b320 2ab1 b120 0ab3 202a b120 b42a  i.. *.. .. *. .*
00000010: b720 0ab4 2ab1 b220 b42a b520 0ab4 2ab1  . ..*.. .*. ..*.
00000020: b220 b62a b320 0ab5 2ab9 20b9 2a20 200a  . .*. ..*. .*  .
00000030: b2b4 2a20 1bc4 336f b2b5 2a1b 6a6f b1b1  ..* ..3o..*.jo..
00000040: 2ab7 20b5 2a20 200a b32a b420 b32a b720  *. .*  ..*. .*. 
00000050: b42a b420 0a2a 2ab6 202a b720 2a2a b720  .*. .**. *. **. 
00000060: 1bce e624 7670                           ...$vp

这使用游程长度编码来生成以下蝙蝠侠一半:

             *           
   *          ****       
****            ****     
****            ******   
*****         *********  
************************ 
*************************
*************************
*************************
************************ 
***********       *****  
***    ***       ****    
**      *       **      

然后反转并复制每一行。


2

Python 2,134字节

for w in'1D 4A13 4C4 6C4 995 O P P P O 57B 47343 27162'.split():r=''.join(c*int(k,36)for c,k in zip(3*'* ',w));print'%25s'%r+r[-2::-1]

在线尝试!

游程长度编码从基数36的左半边开始的每一行。对其进行镜像以形成完整的行,并打印出来。前导空格未编码;而是将左半部分填充为长度25。


我希望我可以在我的版本中使用该填充技巧...
2

2

Mathematica 151字节

Uncompress@"1:eJxTTMoPCm5iYmBQQAAtBVxAK8bA0AjGBgJ0PcgCQABXjaoWwsciBFWPXRKrEESHlha6AjwiYC1apAGQHhK10FsTOV6Chgp6CCEDZDlYdKKKw6WR+OjxD+KiJBSEQoR6AC49ZiI="

便宜又无聊。该字符串仅来自Compress所需输出中使用的内置命令。

更新:

我想我可以使用内置ImportString\ ExportString函数做得更好,但是我看不到ExportString正确地复制和粘贴生成的字符串。例如

b = "           *                         *\n       ****          *     *          ****\n     ****            *******            ****\n   ******            *******            ******\n  *********         *********         *********\n ***********************************************\n*************************************************\n*************************************************\n*************************************************\n ***********************************************\n  *****       *********************       *****\n    ****       ***    *****    ***       ****\n       **       *      ***      *       **"
ExportString[b,"GZIP"]
ImportString[%,"GZIP"]

我似乎无法复制第二行中的文本输出来替换%第三行中的。


2

407 322字节

w=`yes 1|head -30|tr -d '\n'`
for i in B1C000 74A120 54C003 36C003 299004 1C0506 0D0506 0D0506 0D0506 1C0506 257505 447342 727161
{ read a b c d e f <<<$(echo $i| fold -1| xargs)
x=`printf "%.$[0x${a}]d%.$[0x${b}]s%.$[0x${c}]d%.$[0x${d}]s%.$[0x${e}]d%.$[0x${f}]s" 0 $w 0 $w 0 $w`
echo -n $x$[f<1?0:1]
rev<<<$x
}|tr 01 \ \*

在线尝试!

真的很糟糕,需要更多时间或帮助打高尔夫球。它生成的输出为0和1,最后进行音译。以0和1的六位数编码,请注意使前两行的最后一位为0,作为输出中间列的标志。使用printf压力输入数字或字符串以输出0和1。认为该%.$[0x${X}]C图案可用于打高尔夫球。

w=`yes 1|head -30|tr -d '\n'`  # w=111111111111111111111111111111   
for i in B1C000 74A120 54C003 36C003 299004 1C0506 0D0506 0D0506 0D0506 1C0506 257505 447342 727161
{ read a b c d e f <<<$(echo $i| fold -1| xargs)
printf "%.$[0x${a}]d
%.$[0x${b}]s
%.$[0x${c}]d
%.$[0x${d}]s
%.$[0x${e}]d
%.$[0x${f}]s" 0 $w 0 $w 0 $w
echo -n $[f<1?0:1]
printf "%.$[0x${f}]s
%.$[0x${e}]d
%.$[0x${d}]s
%.$[0x${c}]d
%.$[0x${b}]s
%.$[0x${a}]d\n" $w 0 $w 0 $w 0 
}|tr 01 \ \*

2

Python 3中,232个 197 183 164字节

另一个Python答案。虽然没有无聊的压缩代码。令人兴奋的压缩代码。

for s in map(lambda x:x+x[-2::-1],b".$; *',$' ('.* &).* %,+, $R #T #T #T $R %()8 '')&&( *%)$(&".split()):print(*((u-35)*" "+(v-35)*"*"for u,v in zip(*[iter(s)]*2)))

我使用的是幻数35,因为那样就不会出现控制字符,空格或需要转义的内容。遗憾的是我必须分别处理空间和星星,这花了我一些时间。

取消高尔夫:

for s in map(lambda x:x+x[-2::-1],   # map a list to the list and itself reversed,
                                     # minus the last (center) element
# magic string:
".$; *',$' ('.* &).* %,+, $R #T #T #T $R %()8 '')&&( *%)$(&"
.split()):                           # split on whitespace to divide into lines
 print(*(                            # unpack generator expression
(ord(s[i])-35)*" "                   # convert character to int, -25, times space
+(ord(s[i+1])-35)*"*"                # same thing with "*"
for i in range(0,len(s)-1,2)))       # for every pair in the list

该编码方法优于基于36的编码方法。我希望您不要介意我已将其调整为适用于最新解决方案。;)您可以采取一些措施来减少字节数。1您可以通过将print呼叫与放在同一行来节省一个字节for2如果使用bytes字符串,则可以摆脱这些ord调用。3您可以range通过压缩一对迭代器来替换。下面是一个结合了这些想法发电机:((u-35)*" "+(v-35)*"*"for u,v in zip(*[iter(s)]*2))。这些变化将带来您的计数下降到164
PM 2Ring

@ PM2Ring我一点都不介意。度假了几个星期,请随时进行更改。
L3viathan

哦好的。但是,我让您做新的非高尔夫版本。
下午17年

@ PM2Ring已经在公共汽车上了,所以我只希望其他人会批准它
L3viathan

2

PowerShell,305字节,307字节316字节

[IO.StreamReader]::new(([IO.Compression.GZipStream]::new([IO.MemoryStream]::new(([Convert]::FromBase64String('H4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbuHBUsBqAgAA')),0,102),[IO.Compression.CompressionMode]::Decompress))).ReadToEnd()

也许有人可以帮助我进一步缩短它,尽管除非有更简洁的方法来定义自定义类型加速器,否则我无法弄清楚。

编辑:缩短版本(感谢@root)。编码的字符串(prebase64编码)可以修剪八个数组位置,因此可以减小范围。不知道为什么StreamWriter将此膨胀引入MemoryStream。深入了解基本行为。

[IO.StreamReader]::new(([IO.Compression.GZipStream]::new([IO.MemoryStream]::new(([Convert]::FromBase64String('H4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbg')),0,94),[IO.Compression.CompressionMode]::Decompress))).ReadToEnd()

取消高尔夫:

#Read decoded stream 
[IO.StreamReader]::new(
    (
        #Reverse GZip encoding
        [IO.Compression.GZipStream]::new(
            #Load GZip encoded string into a memory stream
            [IO.MemoryStream]::new(
                (
                    # Convert Base64 back to GZip encoded string
                    [Convert]::FromBase64String('H4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbuHBUsBqAgAA')
                ),
                #Start of range
                0,
                #End of range. Stick the Memory Stream into a variable and use .Length here for non golf code
                102
            ),
            #Specify that we are decompressing
            [IO.Compression.CompressionMode]::Decompress
        )
    )
).ReadToEnd()

压缩码:

$s = '           *                         *
       ****          *     *          ****
     ****            *******            ****
   ******            *******            ******
  *********         *********         *********
 ***********************************************
*************************************************
*************************************************
*************************************************
 ***********************************************
  *****       *********************       *****
    ****       ***    *****    ***       ****
       **       *      ***      *       **'

#Create Memory Stream
$ms = [IO.MemoryStream]::new()
#Initialize a stream
$sw = [IO.StreamWriter]::new(
    #Create GZip Compression stream
    [IO.Compression.GZipStream]::new(
        #Reference Memory Stream
        $ms,
        #Set mode to compress
        [IO.Compression.CompressionMode]::Compress
    )
)
#Write input into stream
$sw.Write($s)
#Close the stream
$sw.Close()

#Convert Array to Base64 string
[Convert]::ToBase64String(
    #Retrieve Memory Stream as an array
    ($ms.ToArray() | select -SkipLast 8)
)

1
为什么是102?99的工作原理相同,[IO.StreamReader]::new(([IO.Compression.GZipStream]::new([IO.MemoryStream]::new(([Convert]::FromBase64String('H4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbuHBUsBqAgAA')),0,102),[IO.Compression.CompressionMode]::Decompress))).ReadToEnd()
root

@root,它确实可以,但是我不确定为什么会起作用。您实际上可以将其减少8到94,并删除编码后的输入字符串的最后8个字符。我很难弄清楚为什么这行得通,并且直到我这样做之前,我都不想将其添加到我的答案中。我的压缩功能是否以某种方式错误地添加了一些多余的填充?
Chirishman

1
在您的压缩代码中,来自的最后两个值$ms.ToArray()都为0。是否有必要?

否。尝试使用不同的输入字符串,似乎始终是最后两个完全不需要的数组位置。我将添加一个子句以跳过最后两个到我的压缩脚本中。仍然希望我知道为什么流作家在结尾添加空值
Chirishman

1
没错,它不仅仅是2个尾字符,而是8个。('225','193','82','192','106','2','0','0')可以删除数组中的最后8个位置以创建H4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbg==。我不知道他们来自哪里。

2

Perl 5,168个字节

$_="11 *25 
7 4*10 *5 *10 4
5 4*12 7*12 4
3 6*12 7*12 6
2 9*9 9*9 9
 47
49
49
49
 47
  5*7 21*7 5
4 4*7 3*4 5*4 3*7 4
7 **7 *6 3*6 *7 *";s/$/*/gm;say s/\d+(.)/$1x$&/ger

请注意仅第一行末尾的尾随空格。需要-M5.01,这是免费的。

可以打更多的高尔夫球。


2

LaTeX,314个字节

\documentclass{book}\begin{document}\def\r#1#2{\ifnum#2>64#1\r#1{\numexpr#2-1}\fi}\catcode`.13\catcode`!13\catcode`-13\def!#1{\r*{`#1}}\def-#1{\r~{`#1}}\let.\par\tt-K!A-Y!A.-G!D-J!A-E!A-J!D.-E!D-L!G-L!D.-C!F-L!G-L!F.-B!I-I!I-I!I.-A!o.!q.!q.!q.-A!o.-B!E-G!U-G!E.-D!D-G!C-D!E-D!C-G!D.-G!B-G!A-F!C-F!A-G!B\enddocument

未经解释的版本,并附有说明:

\documentclass{book}
\begin{document}
% Macro for repeating #1 (#2-64) times
\def\r#1#2{\ifnum#2>64#1\r#1{\numexpr#2-1}\fi}
% Prepare '.', '!' and '-' for usage as macro names
\catcode`.13\catcode`!13\catcode`-13
% The ASCII code of #1 (a character) is used as the number of how often '*' will be printed with \r
\def!#1{\r*{`#1}}
% Same as ! but for spaces
\def-#1{\r~{`#1}}
% . becomes a line break
\let.\par
% Set monospace font
\tt
% And finally print the whole thing
-K!A-Y!A.-G!D-J!A-E!A-J!D.-E!D-L!G-L!D.-C!F-L!G-L!F.-B!I-I!I-I!I.-A!o.
!q.!q.!q.-A!o.-B!E-G!U-G!E.-D!D-G!C-D!E-D!C-G!D.-G!B-G!A-F!C-F!A-G!B
\enddocument

2

C#(.NET Core)342333328185175字节

_=>{var r="";for(int i=0,j,k=0;i<63;i++)for(j=0;j++<"-#;#4&,#'#,&.&.).&*(.).('+++++%Q#µ#Q%')7)'(&)%&'&%)&-$)#(%(#)$)"[i]-34;){r+=i%2<1?' ':'*';if(++k%49<1)r+='\n';}return r;}

在线尝试!

更改方法后节省了大量字节。将图形作为2D数组,我通过文件计算了RLE编码:

{ 11, 1, 25, 1, 18, 4, 10, 1, 5, 1, 10, 4, 12, 4, 12, 7, 12, 4, 8, 6, 12, 7, 12, 6, 5, 9, 9, 9, 9, 9, 3, 47, 1, 147, 1, 47, 3, 5, 7, 21, 7, 5, 6, 4, 7, 3, 4, 5, 4, 3, 7, 4, 11, 2, 7, 1, 6, 3, 6, 1, 7, 2, 7 }

奇数索引代表s,偶数索引代表*s。然后,我将每个数字替换为可打印的ASCII表示形式(将“#”字符设为1),然后得到:

-#;#4&,#'#,&.&.).&*(.).('+++++%Q#µ#Q%')7)'(&)%&'&%)&-$)#(%(#)$)

因此,该算法只是通过解压缩此字符串并在适当位置添加换行符来计算图形。


1
无需设置l为变量,只需直接在循环中使用它即可。.ToString(i, 2)-> .ToString(i,2)即删除空格。
TheLethalCoder

您可以用1e10这些数字的十进制或科学()表示形式保存任何字节吗?这个挑战实际上在这里很有帮助。
TheLethalCoder

@TheLethalCoder不行。我刚刚检查了一下(顺便说一下,给人留下了深刻的挑战),我已经使用了最小的表示形式,所以没有运气。我什至尝试找到它们之间最大的公约数,看看是否可以将数字除以一个常数,但是显然
Charlie

2

PowerShell129128字节

-join('5+C+<.4+/+4.6.616.206160/33333-Y+s*t+Y-/1?1/0.1-./.-1.5,1+0-0+1,'|% t*y|%{(' ','*')[$i++%2]*($_-42)})-split'(.{49})'-ne''

在线尝试!

取消高尔夫:

-join(
    '5+C+<.4+/+4.6.616.206160/33333-Y+s*t+Y-/1?1/0.1-./.-1.5,1+0-0+1,'|% toCharArray|%{
        (' ','*')[$i++%2]*($_-42)
    }
)-split'(.{49})'-ne''

输出:

           *                         *           
       ****          *     *          ****       
     ****            *******            ****     
   ******            *******            ******   
  *********         *********         *********  
 *********************************************** 
*************************************************
*************************************************
*************************************************
 *********************************************** 
  *****       *********************       *****  
    ****       ***    *****    ***       ****    
       **       *      ***      *       **

主要思想很简单

标志编码:

  1. 将所有标志线连接到一个字符串
  2. 计算空格和星号
  3. 编码每个段的长度+ 42作为一个字符

解码(此脚本):

  1. 从cripto字符串中获取每个char的char减42的代码。这是一段的长度
  2. 附加段,包含一个空间或星号重复的Length
  3. 每隔49个符号插入新行以拆分行

一些聪明的事情

  1. 编码算法建议使用代码189来显示3条中间星号行。此符号不是ASCII。它可以在现代环境下正常工作,但是脚本长度存在歧义。因此,我将non-ascii-符号替换½s*t(73个星号,0个空格,74个星号)。
  2. 我在最后一行剪掉右边的空格以节省1个字节。抱歉,蝙蝠侠。
  3. 为什么偏移是42?只是想:)而且cr子串看起来也不错。

额外:会徽编码编码

(@"
           *                         *           
       ****          *     *          ****       
     ****            *******            ****     
   ******            *******            ******   
  *********         *********         *********  
 *********************************************** 
*************************************************
*************************************************
*************************************************
 *********************************************** 
  *****       *********************       *****  
    ****       ***    *****    ***       ****    
       **       *      ***      *       **       
"@ -replace"`n"-split'( +|\*+)'-ne''|%{[char]($_.Length+42)})-join''

1

Mathematica,271个字节

T=Table;f[x_]:=""<>T["*",x];m={f@49};n={f@47};g[y_]:=""<>T[" ",y];k[a_,b_,c_,d_,e_]:={(s=f@a<>g@b<>f@c<>g@d<>f@e)<>StringDrop[StringReverse@s,1]};Grid@{k[1,13,0,0,0],k[4,10,1,3,0],k[4,12,0,0,4],k[6,12,0,0,4],k[9,9,0,0,5],n,m,m,m,n,k[5,7,0,0,11],k[4,7,3,4,3],k[2,7,1,6,2]}

1

Braingolf590个 580 579 577 428 423 312字节

-111字节,因为LeakyNun是打高尔夫球的神

14#
46*6394943[92+.6,5][8]#.[# ]#*[# ]#*#
[# ][#*][# ]#*[# ]#*[# ]#*...#
[# ][#*][# ][#*][# ]#*...#
# ..[#*][# ][#*][# ][#*]#
# .[#*][# ][#*][# ][#*]#
# [#*]#
&@#0[#*]#
!&@!&@# &@#.[#*]"
  "&@4645*643646366556[#*][# ][#*][# ][#*]"
    "[#*][# ]#*..# ...[#*]# ...#*..[# ][#*]#
[# ]#*.[# ]#*[# ]#*..[# ]#*[# ]#*.&@

在线尝试!

Braingolf 不太擅长ASCII艺术,但该死,我尝试过。

我根本无法解释这个集群f ** k


1

///171166字节

因为我\r\n在源代码中使用了,所以节省了5个字节,哈哈。

/-/  //,/!!//'/**//&/*"//%/--//#/,,,,,!*//"/%-//!/''/"% &""" *
" !"%*% &%!
% !""!'&"!
- !*&"!'&"!'
-,&- ,&- ,*
 #'
!#
!#
!#
 #'
-!& ,,!& !*
%!" '*%!*%'& !
" *& &'&& '

在线尝试!

通过使用用单个字符替换“最经济”子字符串的连续迭代进行压缩。尽管可能是以下两种情况之一,但这几乎是最佳的:

  1. 我可以摆脱使用一些元替换(例如,动态插入正则表达式)的麻烦
  2. 首先(不太可能)替换较经济的子字符串会更有好处。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.