ASCII艺术“ Hello-World!” [关闭]


39

您的目标是编写输出“ Hello-World!”的最短程序。作为ASCII艺术。

规则:

  • 它必须是人类可读的,我不在乎它的大小(cols / rows)
  • 输出中只能包含空格(“”),尖号(“#”)和换行符
  • 输出必须使用等宽字体(但字母不必使用等宽字体)
  • 结果,每个字符必须彼此隔开至少一个空格

请在代码中添加标题以及语言和字节数。


5
bash:33个字符– pastebin.com/HZ1w8z8g这可以接受吗?
manatwork 2014年

4
为什么要使用连字符?...
Timwi 2014年

1
我想使使用HQ9 +这样的预定义的东西变得不可能或不可行。
manatwork 2014年

1
@PeterTaylor:由空格和哈希组成的输出必须使用等宽字体,但是由大量哈希表示的字母不必都具有相同的宽度。
Timwi'2

Answers:


18

我绝对喜欢这个

Perl,126 116 114 102 98   87(69)字符(仅ascii,无外部字体)

截至目前最短的ascii解决方案,它不使用任何外部字体。

好吧,我想提出一些优雅的解决方案,但是@Ilmari Karonen用unpack... 挑战了我……不应该那样做:-)

好吧,这个92 88 69个chars代码生成了类似于@Ilmari Karonen的难看的,不可读的输出:

say map{y/01/ #/r}unpack"((b6)7a)*",'eT@j@DE
UUBjdeE
wTujjTA
eUBTddE'

更优雅的变体而无需打开包装(88个字符):

map{print$"x$_,$/x/4/,"#"x!/7/}7&ord,7&ord>>3for'HRyYOKLIIjIRHBa@AJIAIIIJaQHQNSRH'=~/./g

但是我认为|。| e || .- |||。,d!没有什么比Hello-World更像!并且不应被允许,所以真正的解决方案就在这里-解压缩变体,共87个字符

say map{y/01/ #/r}unpack"((b6)9a)*",'E`D@HB@Hd
EcD@HB@Hd
ggDsIbaIf
e`dDhRRHE
ECICPaQPf'

输出:

在此处输入图片说明

98个字符的更优雅的变体:

map{print$"x$_,$/x/1/,"#"x!/7/}7&ord,7&ord>>3for'PW{nw^QD[w}vK@X@PcP@jCDjXQk[rRRbSQD\CWbXeX'=~/./g

输出:

在此处输入图片说明

较旧的解决方案(114个字符),不同的编码类型:

print'#'x(3&ord),$"x($:=15&ord>>2),$/x!$:for'EmM}U}]MBEQSM}U}]MBOFNMQOKUMSKUOBEM]MMM]IIIMIUQIAEQWMMgFROYQOB'=~/./g

输出:

在此处输入图片说明


最后忘了惊叹号,即Hello-World!此外,应该是小写字母e,但我知道您做了大写字母使其可读性为五像素高字体...

47

JavaScript,178个字节

c=document.createElement("canvas").getContext("2d");c.fillText("Hello-World!",0,7);d=c.getImageData(1,0,56,7).data;s="";for(i=3;i<1568;i+=4){s+=d[i]?"#":" ";s+=(i+1)%224?"":"\n"}

在Firefox 27 Scratchpad中有效。

#   #        #  #          #   #   #          #     #  #
#   #        #  #          #  # #  #          #     #  #
#   #   ##   #  #   ##      # # # #   ##   ## #   ###  #
#####  #  #  #  #  #  #     # # # #  #  #  #  #  #  #  #
#   #  ####  #  #  #  # ##  # # # #  #  #  #  #  #  #  #
#   #  #     #  #  #  #     # # # #  #  #  #  #  #  #   
#   #   ###  #  #   ##       #   #    ##   #  #   ###  #

我认识Arial:-D
Timwi,2014年

4
这是我最喜欢的。您已经使用了一种有趣的方法来得出解决方案。精彩!
Darth Egregious

2
精巧,我相信您刚刚为JavaScript创建了Figlet;)
WallyWest 2014年

Dagnammit,这也是我的第一个想法!这是反对。:)
Jordan Gray

37

Mathematica 101 99 98

这将对表达式进行栅格化,获得二进制图像数据,将每个1转换为“#”,将每个0转换为“”(空白),并以12 x 130字符网格显示输出。

GraphicsGrid[ImageData@ImageResize[Binarize@Rasterize@Style["Hello-World!",99],130] 
  /.{1→"",0→"#"}]

你好

乔纳森·范·马特雷(Jonathan Van Matre)节省了一个角色。


1
为什么厚度在l之间变化?
MrZander 2014年

我将表达式栅格化为单个图像。如果我一个字母一个字母地完成,那么l将会是相同的。另外,通过增加栅格化网格的大小,输出趋于接近打印字符的质量。但是,较大的网格会导致相对较小的“#”,以至于它们似乎只是像素。问题仍然存在:为什么图像中的2 l会获得不同的权重?
DavidC 2014年

3
@MrZander,这就是字体提示的原因:当尝试将字体适合低分辨率像素网格时(例如在ASCII艺术中或在屏幕上),杆的宽度永远不会真正均匀,因为字体不能在所有尺寸下都具有整数像素宽的杆。是带有图片的很好的解释。
2014年

1
可能是最好看的
Ronan Dejhero 2014年

1
乔纳森·范·马特雷(Jonathan Van Matre),谢谢。第一个参数可以减少到99,但由于输出质量,我不想减少第二个参数。(我意识到这是一个代码高尔夫球挑战,但我确实感到很自豪。)
DavidC

25

Delphi 85字节

var s:tstringlist;begin s:=tstringlist.Create;s.LoadFromFile('\a');Write(s.Text);end.

我知道,这不是最漂亮的解决方案,但是没有规则说您不能使用外部资源。
结果: 结果


12
+1代表使用#作为背景而非前景的创造力。
gerrit 2014年

1
您可以将声明为TStrings。(但请保留实例化TStringList。)
manatwork 2014年

您正在从Delphi附带的文件中加载文件,还是您自己编写文件?如果是后者,我认为您需要将其长度计为分数的一部分。
Ilmari Karonen 2014年

@Ilmari,我确定Delphi不会附带带有“ Hello-World” ASCII艺术的文件:)此外,答案中还描述了它使用外部资源。
TLama'2

3
@TLama:我也这么认为,我只是想礼貌地表达它。我的观点是,即使允许使用外部资源,该程序在除作者以外的任何人的计算机上仍然会失败(事实上,我们没有证据表明该程序甚至可以在他的计算机上运行)。另外,我可以使用以下Perl脚本来击败他的得分:do X。“外部资源”的内容X未指定(对我
有用

15

Perl 5、54个字节/ 71个可打印ASCII字符

注意:这是此答案的第二个版本。对于使用PHP和gzinflate()的原始64字节/ 95字符版本,请参见此答案的历史记录

这是71个字符的可打印ASCII版本:

y/01/ #/,say for unpack'(B40)4',unpack u,'4I*`1`(JJI!$FFNRJU52HIJ0*))H'

54字节的版本包含不可打印的字符,因此我将其作为十六进制转储提供。在Unixish系统上,您可以xxd -r用来将十六进制转储重新转换为可执行的Perl脚本:

0000000: 792f 3031 2f20 232f 2c73 6179 2066 6f72  y/01/ #/,say for
0000010: 2075 6e70 6163 6b27 2842 3430 2934 272c   unpack'(B40)4',
0000020: 27a4 a011 008a aaa4 1126 9aec aad5 54a8  '........&....T.
0000030: a6a4 0a24 9a27                           ...$.'

两者都需要一起运行perl -M5.010才能启用Perl 5.10+ say功能。他们将产生以下输出:

“ Hello-World!”的屏幕截图  ASCII艺术

(显示为屏幕截图,因为SE上的巨大行高使ASCII艺术很难看懂。小写的“ e”有点尴尬,但我相信这几乎可以理解为可读性。)


附言 如果上述解决方案的输出对您来说太简单了,请使用以下92个字符的变体,产生类似于Tomas解决方案的输出:

y/01/ #/,say for unpack'(B56)*',unpack u,'CH!(`"(`"":,2``B``@GGDC\'(C#(YI!)("I)"2*,),`4,03D'

这是屏幕截图:

“ Hello-World!”的屏幕截图  ASCII艺术


点子 我很确定GolfScript,51个字符)是最短的可打印ASCII解决方案,如果您不算那些仅称横幅/ FIGLet或以其他方式作弊的代码:

'iJ@Q@HmURBIMM{JkUUJeMRAQIM'{2base(;{' #'=}/}%39/n*

输出结果与上面的71个字符的Perl解决方案相同。


我想说的是您刚刚越过可读性的边界:-)
Tomas

1
由于此处的行距很大,因此在我的终端中比在SE上更具可读性。
Ilmari Karonen 2014年

我的意思是,它还是不可读。顺便说一句,我可以生成92个字符的输出,而无需外部压缩算法:-)
Tomas

@Tomas:没错,拉链似乎不是这里的最佳答案。如果没有的话,我会给你+1。顺便说一句,我可以用71个字符来完成;往上看。:-)
Ilmari Karonen 2014年

1
Ilmari,您不应该用unpack:-) 来挑战我的:-)找到了一个69个字符的解决方案(其中87个具有我的出色输出)。
Tomas

8

壳+ Figlet(35)

$ figlet -w 90 -f banner Hello-World!
#     #                                   #     #                             ### 
#     # ###### #      #       ####        #  #  #  ####  #####  #      #####  ### 
#     # #      #      #      #    #       #  #  # #    # #    # #      #    # ### 
####### #####  #      #      #    # ##### #  #  # #    # #    # #      #    #  #  
#     # #      #      #      #    #       #  #  # #    # #####  #      #    #     
#     # #      #      #      #    #       #  #  # #    # #   #  #      #    # ### 
#     # ###### ###### ######  ####         ## ##   ####  #    # ###### #####  ### 

这是什么字体?这些只是看起来像较小的大写字符。
Cruncher 2014年

它是横幅-f banner这是我发现的第一个使用#而不是*或|的字体。和_。
2014年


将“ 90”更改为“ 9”会产生一个又高又瘦的问候世界,但是由于OP不在乎列或行,因此应该可以接受。
alexyorke 2014年

有时选民对我感到困惑。为什么这会得到+8的净分数,而另一个figlet答案却得到-3的净分数?
Digital Trauma 2014年

8

的Python 260 215 186 152

>>> print'eJyNkFEKwDAIQ/93isC7/x3LyIJullHrR1BfJSIJPUHTlmiUPHbxC7L56wNCgZAxv3SjDWIxsoOb\nzMaBwyHYPJ5sVPNYxXism74vcIsFZlYyrg=='.decode('base64').decode('zip')
#   #        #  #          #   #   #          #     #  #
#   #        #  #          #  # #  #          #     #  #
#   #   ##   #  #   ##      # # # #   ##   ## #   ###  #
#####  #  #  #  #  #  #     # # # #  #  #  #  #  #  #  #
#   #  ####  #  #  #  # ##  # # # #  #  #  #  #  #  #  #
#   #  #     #  #  #  #     # # # #  #  #  #  #  #  #   
#   #   ###  #  #   ##       #   #    ##   #  #   ###  #

的Python 196 183 130 114(但uglyer)

>>> print'eJxTVlBWgCAgAQHKqBywAJeyAgJCZREcZWUYyaUMIpUVEKqRNcLEueDqEaZBLVVWQDITADIdFBw='.decode('base64').decode('zip')
# #  #  # #        # # #        #   # #
# # # # # #  #     # # #  #  ## #  ## #
### ##  # # # # ## # # # # # #  # # #
# #  ## # #  #      # #   #  #  #  ## #

我使用base64编码的压缩数据。然后代码从base64编码中解码出来,然后解压缩。


哇,这真的很容易辨认!

7

PHP — 183字节

使用sebcap26的ASCII艺术作为来源...

foreach(str_split(base64_decode('iASAERACCYgEgBKQAgmIxIwKoxo5+SSSCqSSSYnkksqkkkmJBJIKpJJIiOSMBEMSOQ'))as$i=>$j)echo strtr(sprintf("%8s%s",decbin(ord($j)),($i+1)%7?"":"\n"),'01',' #');

#   #        #  #          #   #   #          #     #  #
#   #        #  #          #  # #  #          #     #  #
#   #   ##   #  #   ##      # # # #   ##   ## #   ###  #
#####  #  #  #  #  #  #     # # # #  #  #  #  #  #  #  #
#   #  ####  #  #  #  # ##  # # # #  #  #  #  #  #  #  #
#   #  #     #  #  #  #     # # # #  #  #  #  #  #  #   
#   #   ###  #  #   ##       #   #    ##   #  #   ###  #

6

Brainfuck,372字节

(我知道。但是为了完整起见,必须要动脑子^^它不会变得更短,因为重复很少。第一和第二行循环已经...)

++++++++[>++++>++++<<-]>+++>>++++++++++>>+>++[-<<<<<.>.<.>..>>>[-<<<.>>>]<[-<<<.>>>]<<..<.>>>++[-<<.<.>..........<.>....>>]<<<.>.<.>>.>+>>]<<<<<...>.<.>.<.>.<.>.<.>..<..>..<...>.<.>..<.>..<.>..<..>...<..>.<.>..<...>.<.>>.<<.>.<.>.<.>...<.>.<.>.<.>..<.>.....<.>.<...>.<.>.<.>..<.>.<.>...<.>.<.>..<.>>.<<.>.<.>.<...>.<.>.<.>..<..>.......<..>.<..>...<..>..<.>...<.>..<..>..<.

此处的翻译:http : //koti.mbnet.fi/villes/php/bf.php


# #     # #          #     #          #    # #
# #  #  # #          #     #          #    # #
### # # # #  ##  ### #  #  #  ##   ## #  ### #
# # #   # # #  #     # ### # #  # #   # #  #
# # ### # #  ##       ## ##   ##  #   #  ##  #

将@ASKASK的数字生成器和图像与我的循环和一些其他调整结合起来,我们得到:

Brainfuck,343 339 336 334个字节

看起来比我的原始版本难看。

+++++[->++++++>+++++++>++<<<]>++>>>+>>++[-<<<<.<.>.<..>>>[-<<<.>>>]>[-<<<.>>>]<<<<..>.<.>>>++[-<<.<.........>.<...>>>]<<.<.>.>.>>+>]<<<<..<<+++++[->>.<.<]>.>.<..>...<.>.<.>.<.>.<..>.<...>..<.>.<..>..<.>.>.<.<.>.<.>.<...>.<.>.<.>.<.>.<.....<++++++[->>.<.<]>..>.<.>.<.>.>.<.<.>.<..>.<..>.<.>.<..>.<.......>...<...>.<..>.<...>.<..>.<..>.

(图片见@ASKASK的答案)


5

的EcmaScript 6,172 161

'¡I%e!c0ĄJ¥eìo0¸ËefMs0µKcÊIs0´Ê¢1éo'.split(0).map(s=>s.split('').map(c=>{for(i=8,s='';i--;)s+=(c.charCodeAt(0)-33)&(1<<i)?'#':' ';return s;}).join('')).join('\n')

输出:

#         # #        #   #   #           #    #
###   ##  # #  ##    #   #   #  ##  # ## #  ###
#  # #### # # #  #   #   #   # #  # ##   # #  #
#  # #    # # #  #    # # # #  #  # #    # #  #
#  #  ### # #  ##      #   #    ##  #    #  ###

说明:

ASCII文本被压缩为一个字符串,其中每个位代表一个像素

  • 0 对于 SPACE
  • 1 对于 #

应用偏移量33是为了只获取可打印的字符。


return不需要第一个粗箭头功能的括号和语句。
manatwork 2014年

@manatwork我尝试将其删除,但随后不再编译。你确定吗?
Florent 2014年


@manatwork谢谢!
Florent 2014年

charCodeAt(0)可以减少charCodeAt()
Chiru 2015年

4

滑动,38个字符(76个字节)

갦륈똄릵꺕녔꺒녪냕녪낷뚕년꺒녦냉괄낵要감嚙긂밃⓶掘⓶終丟併껧뜴꼧밍替現겠合終

输出:

# # ## #  #   #     #   #  #  ##  #  ##  #
# # #  #  #  # #    #   # # # # # #  # # #
### ## #  #  # # ## # # # # # ##  #  # # #
# # #  #  #  # #    # # # # # # # #  # #  
# # ## ## ##  #      # #   #  # # ## ##  #

4
代码高尔夫信息页面显示 “如果使用Unicode,则字节数应使用UTF-8。” 如果我没记错的话,那么程序长度为114个字节。(您提到的76个字节适用于没有BOM的UTF-16。)
2014年

@res:我更改了它,因为没有必要。我的Sclipting解释器可以很好地理解UTF-16,因此它是编码为UTF-16的有效程序。
Timwi 2014年

1
Timwi,案件很重要
Tomas

3
@ user689-实际上是“ Hello-World!” 在结尾处带有感叹号...

1
我想“被社区接受”的意思是“ 未经少数群体讨论就被少数有权这样做的人接受”。
2014年

3

Brainfuck,362个字节

抱歉@ johannes-h,我看到了你的作品,并受到启发制作自己的作品。它结合了开始时更快的数字生成和更简单的图片以更少的字节生成结果。但是,它不会在其他任何地方使用循环,因此可以进行优化。

+++++[->++++++>+++++++>++<<<]>++>.<.>.<.....>.<.>.<.........>.<...>.<.........>.<...>.<.>.>.<.<.>.<..>.<..>.<.>.<.........>.<...>.<.........>.<...>.<.>.>.<...<.>.<.>.<.>.<.>.<..>.<..>...<.>.<.>.<.>.<..>.<...>..<.>.<..>..<.>.>.<.<.>.<.>.<...>.<.>.<.>.<.>.<.....>.<.>.<.>.<.>.<.>.<.>.<...>.<.>.<.>.>.<.<.>.<..>.<..>.<.>.<..>.<.......>...<...>.<..>.<...>.<..>.<..>.

产生:

图片


嗯 数字生成短了多少?'因为更改图像看起来对我来说很欺骗(至少在直接比较我们的解决方案时-在这次竞赛中完全有效)^^ BUt我稍后再研究一下:)您可以先介绍一下我的循环两行。它要短很多(如果我没记错的话,大约是10-20字节)
Johannes H.

将您的版本降低到343字节,请参阅我的答案
Johannes H.

甚至更短,用循环替换更多重复。现在是339。
Johannes H.

我没有足够的声誉来评论您的,但是如果您仔细查看您的新版本,您会在其中找到一个“> <”,可以将其删除以删除两个字节:)
ASKASK 2014年

3

ImageMagick + sed,71字节

我没有看到其他ImageMagick条目,所以这是我最近的事迹:

convert +antialias label:Hello-World! xpm:-|sed '8,+9y/ /#/;s/[^#]/ /g'

我认为这sed部分可以打更多些。

在线尝试

输出:

  ###########     
  ####### #####     
  ############     
  ###########################     
  ##############################     
  ###########################     
  ##################     
  #### ############## ###### ##        
  ############### ##########     


2

后记,154 133

<~GasbQ8I>GO#QsOD7:?,pa&5XCgo@jeLPX:a4F9kN1nu1B@8KjD"^]WgY[MA.2VBjpTNo5$Pi%uI9Lr>,9`~>/FlateDecode filter 999 string readstring pop =

    <~GasbQ8I>GO#QsOD7:?,pa&5XCgo@jeLPX:a4F9kN1nu1B@8KjD"^]WgY[MA.2VBjpTNo5$Pi%uI
9Lr>,9`~>
/FlateDecode filter 
999 string readstring pop 
=

Johannes H.的答案是仅ASCII来源,ASCII艺术的灵感来源:-)

# #     # #         #    #          #    # #
# #  #  # #         #    #          #    # #
### # # # #  ##  ## #    #  ##   ## #  ### #
# # #   # # #  #    # ## # #  # #   # #  #
# # ### # #  ##      #  #   ##  #   #  ##  #

(在终端中更具可读性)

Perl,102岁

print$-%44?'':"\n",vec(unpack(u,'<!040`A!:4@`A`*%7918REEM1":T4)75E(#&1"0``'),$-++,1)?'#':' 'for 0..219

与上面相同的输出。我知道我对上面的两个Perl答案都不满意,但是无论如何我都会发布它。至少我尝试并朝着正确的方向前进(并且没有看到最短的答案):-)。


2

纯Bash,无外部实用程序-133个字符:

c=" #";for x in 0x{5250088045,55520A914D,74556AAA54,535205124D};do while((s=(t=x)^(x/=2)*2,t));do L=${c:s:1}$L;done;echo "$L";L=;done

使用左移和右移(除以2并相乘)和xor来找到一位。

字体数据从Blender / Ilmari Karonen被盗。

在Bash 3.2和4.2中测试

顺便说一下,这只有166个字符:

echo "# #  #  # #        #   #        #   # #
# # # # # #  #     # # #  #   # #  ## #
### #   # # # # ## # # # # # #  # # #  
# #  ## # #  #      # #   #  #  #  ## #"

1

Python 3、114

print('\n'.join(bin(x)[2:]for x in[353530052677,366448644429,499649260116,357858349645]).translate({48:32,49:35}))

输出(从@Ilmari Karonen窃取的4个字符的高eW):

# #  #  # #        #   #        #   # #
# # # # # #  #     # # #  #   # #  ## #
### #   # # # # ## # # # # # #  # # #  
# #  ## # #  #      # #   #  #  #  ## #

还有一个较短的(107):

print('\n'.join(bin(x)[2:]for x in[11993933918769,16391913257513,12021315382193]).translate({48:32,49:35}))

输出:

# # ### #   #   ###   # # ### ##  #   ##   #
### ### #   #   # #   # # # # ### #   # #  #
# # ### ### ### ###   ### ### # # ### ##   #

这几乎是不可读的。您来自第二个输出的世界实际上是Uorld。
Silviu Burcea 2014年

@SilviuBurcea:在实际的终端模拟器上看起来更好。另外,“人类可读”为您提供了一些摆动空间。我敢肯定你会猜到什么,““ HELLO⊔ORLD!” 手段。
Blender

使用十六进制常数并删除一些字符
Floris 2014年

@Floris:我尝试过。两个字符的前缀使它们直到20位左右都一样长。
Blender 2014年

1

Python 154个字符,(字符为5X7)

print'\n'.join(map(''.join,zip(*(''.join("# "[int(e)]for e in"{:07b}".format(ord(c))[1:])for c in"€÷÷÷€ÿñêêòÿ€ÿ€ÿñîîñÿûûÿŸáþÁ¿ÁþáŸÿñîîñÿàïÿ€ÿÿñîî€ÿ‚"))))

输出量

#   #      # #         #   #   #         #     # #
#   #      # #         #  # #  #         #     # #
#   #  ##  # #  ##      # # # #   ##  ## #   ### #
##### #  # # # #  #     # # # #  #  # #  #  #  # #
#   # #### # # #  # ##  # # # #  #  # #  #  #  # #
#   # #    # # #  #     # # # #  #  # #  #  #  #  
#   #  ### # #  ##       #   #    ##  #  #   ### #

1

重击:

103 89字节)

码:

base64 -d<<<rohBEmRiqIihFVRS7IitVWRSqIihVVRQru5Aoldi|xxd -b|sed -e's/ //g;s/1/#/g;s/0/ /g'|cut -b'9-55'

输出:

# # ### #   #    #     #   #  #  ##  #   ##   #
# # #   #   #   # #    #   # # # # # #   # #  #
### ##  #   #   # # ## # # # # # ##  #   # #  #
# # #   #   #   # #    # # # # # # # #   # #   
# # ### ### ###  #      # #   #  # # ### ##   #

体积较小,但可读性较差(基于http://mckgyver.pbworks.com/f/1240440791/3PixelFont.jpg):

码:

base64 -d<<<V0nCLsmQdklaqslQV23BTq2Q|xxd -b|sed -e's/ //g;s/1/#/g;s/0/ /g;'|cut -c'9-52'

输出:

 # # ### #  #  ###    #   # ### ##  #  ##  #
 ### ##  #  #  # # ## # # # # # ##  #  # # #
 # # ### ## ## ###     # #  ### # # ## ##  #

1

Javascript / ES6(108字节)

复制到控制台:

[,0xa0a028045,0xeeae2bb5d,0xacaabaa54,0xaeae2ba5d].map(a=>a.toString(2).replace(/./g,b=>' #'[b])).join('\n')

输出:

"
# #     # #       # #        #   # #
### ### # # ###   # # ### ## # ### #
# # ##  # # # # # ### # # #  # # #  
# # ### # # ###   # # ### #  # ### #"

(需要兼容ECMAScript6的浏览器,即Firefox 22+)

灵感来自@ maximeeuziere,@ p01,@ aemkei


.join('\n')可以减少到.join(` `)空格是实际换行符的位置。
Chiru 2015年

1

作者:xem,aemkei,p01,jonas

在JS控制台中执行此操作。

JavaScript中,跨浏览器,133个 132 126 117字节

for(i=s="";l=[43117609029,64070269789,46349920852,46890400349][i++];)for(j=0,s+="\n";c=l.toString(2)[j++];)s+=" #"[c]

JavaScript,ES6,可在Firefox上使用,108字节

[,0xa0a028045,0xeeae2bb5d,0xacaabaa54,0xaeae2ba5d].map(a=>a.toString(2).replace(/./g,b=>' #'[b])).join('\n')

结果:

>
# #     # #       # #        #   # #
### ### # # ###   # # ### ## # ### #
# # ##  # # # # # ### # # #  # # #  
# # ### # # ###   # # ### #  # ### #

@ p01在这里做了一个较短的版本(118字节):twitter.com/p01/status/433230019419471872
aemkei 2014年

1

HTML,209个字符

<pre># #     # #                      #   # #
# #     # #        # # #         #   # #
###  ## # #  #     # # #  #  ##  #  ## #
# # ##  # # # # ## # # # # # # # # # #
# # ### # #  #      # #   #  #   # ### #</pre>

这算吗?:)


1

Shell,20个字符:

banner Hello-world\!

为此,您当然需要该banner程序。在Debian上,您可以通过安装bsdmainutils软件包来获得它。

这将打印出精美呈现的消息版本,该消息旨在在一台旧的连续进纸打印机上进行打印,因此上述文本的输出为322行长乘以123列宽,然后您将其打印输出翻面以阅读消息。您可以将结果纸作为横幅悬挂在墙上,因此得名。

http://en.wikipedia.org/wiki/Banner_%28Unix%29

编辑:看起来Debian也有sysvbanner软件包,它安装了一个横幅程序,该横幅程序水平打印文本以在终端上显示。但是,这仅会打印消息的前10个字符,因此对于此代码高尔夫球问题有点烦人!


1
我相信你是要写banner hello-world
弗洛里斯2014年

@Floris,感谢您的注意。固定。
steveha 2014年

1
请注意,横幅在1979年出现在Unix v7上,并且几乎在每个Unix上都可以找到。
sch 2014年

@sch,我同意banner几乎所有UNIX都可以使用。我只是把Debian软件包作为方便的证明,证明我不只是为那些不了解它的人编造了东西。这些天来,我不希望banner在UNIX上找到默认安装的设备,这比我在计算机实验室中找不到连续进纸打印机的希望更多。但是,任何有关编写横幅文本的代码都应该真正banner在其中放置该程序。作为计算机极客,它是我们丰富的文化历史的一部分。:-)
steveha 2014年

1

bash,175170字节

您需要浪费很多字符才能产生漂亮的输出

base64 -d<<<H4sICKaT9FICAzAxAK2RQQ7AIAgE776CZP7/x1ZjERebcJAL0QybhcV6YdWizAPNaUatQQLFpj6h+c/XA05WF9Wtk9WJcxz4oe6e1YPQa7Wiut2wfjJ16STY30lSnNIlzvdpHhd6MiTOB65NYc+LAgAA|zcat

输出:

#     #                                         #     #                                   ###
#     #  ######  #       #        ####          #  #  #   ####   #####   #       #####    ###
#     #  #       #       #       #    #         #  #  #  #    #  #    #  #       #    #   ###
#######  #####   #       #       #    #  #####  #  #  #  #    #  #    #  #       #    #    #
#     #  #       #       #       #    #         #  #  #  #    #  #####   #       #    #
#     #  #       #       #       #    #         #  #  #  #    #  #   #   #       #    #   ###
#     #  ######  ######  ######   ####           ## ##    ####   #    #  ######  #####    ###

你可以用LZMA / unlzma使其体积更小
伊曼纽尔

0

F#-204个字符

for s in(Seq.map(Seq.unfold(function|0L->None|i->Some(" #".[int(i%2L)],i/2L)))[173948798213L;174770890021L;191304848727L;182715110773L;45277009173L;191279670629L])do printfn"%s"(new string(Seq.toArray s))

输出:

# #     # #        # #         #   # #
# #  #  # #  #     # #  #   ## #   # #
### # # # # # #    # # # # #   #  ## #
# # ### # # # # ## # # # # #   # # # #
# # #   # # # #    ### # # #   # # #  
# #  ## # #  #     # #  #  #   #  ## #

0

Python + pyfiglet -87个字符

from pyfiglet import figlet_format     
print(figlet_format('Hello-World!', font='banner'))

输出量

#     #                                   #     #                             ### 
#     # ###### #      #       ####        #  #  #  ####  #####  #      #####  ### 
#     # #      #      #      #    #       #  #  # #    # #    # #      #    # ### 
####### #####  #      #      #    # ##### #  #  # #    # #    # #      #    #  #  
#     # #      #      #      #    #       #  #  # #    # #####  #      #    #     
#     # #      #      #      #    #       #  #  # #    # #   #  #      #    # ### 
#     # ###### ###### ######  ####         ## ##   ####  #    # ###### #####  ### 

要安装pyfiglet,请运行:

$ pip install pyfiglet

0

带有pyfiglet的Python:66使用argv,69不使用

66:

from pyfiglet import*
print(figlet_format(sys.argv[1],font='3x5'))

69:

from pyfiglet import*
print(figlet_format('Hello-World!',font='3x5'))

fir必须称为,例如:

python asciiart.py'Hello-World!'

第二:

python asciiart.py。

输出:

    # #      #   #          # #          #    #  #  
    # # ###  #   #  ###     # # ### ###  #  ###  #  
    ### ##   #   #  # # ### ### # # #    #  # #  #  
    # # ###  ##  ## ###     ### ### #    ## ###     
    # #                     # #                  #  

(嗯,这种字体看起来有点cr脚。不过:)

[edit]从参数中删除了过时的破折号。


为什么在输出前面加上破折号?
Ilmari Karonen 2014年

我的错误是使用argv的输出,我在参数前使用了破折号(习惯的用法,因为我一直使用bash)。我会编辑的,谢谢。
Taku 2014年

0

Javascript 137(134)

使用整数位来表示锐利的空白。经过Firefox 27测试。

137个字元

s="";[0xadb73eead9,g=0xa9252aaa94,0xed252aac95,g+1,0xad272aee99].map(n=>{for(;n>0;n/=2)n%2?[s="#"+s,n--]:s=" "+s;s="\n"+s});console.log(s)

# # ## #  #  ###  # # # ### ### #  ##  #
# # #  #  #  # #  # # # # # # # #  # # #
### ## #  #  # #  # # # # # ##  #  # # #
# # #  #  #  # #  # # # # # # # #  # #  
# # ## ## ## ###  ##### ### # # ## ##  #"

134个字符(旋转180°)

s="";[0xadb73eead9,g=0xa9252aaa94,0xed252aac95,g+1,0xad272aee99].map(n=>{s+="\n";for(;n>0;n/=2)n%2?[s+="#",n--]:s+=" "});console.log(s)

"
#  ## ## # # ### #####  ### ## ## ## # #
  # #  # # # # # # # #  # #  #  #  # # #
# # #  #  ## # # # # #  # #  #  # ## ###
# # #  # # # # # # # #  # #  #  #  # # #
#  ##  # ### ### # # #  ###  #  # ## # #"

0

Python3(126)

字符之间还有一个额外的空间,以使其更具可读性。因此从技术上讲,这是一个125个字符的解决方案。

print(' '.join(['','\n'][i%40==0]+['#',' '][int('72liw1j4glyc34dum02j2a4ipxa8b7vvp65x511',36)//2**i%2==0]for i in range(200)))

输出:

#   #   # #   #     #     # # #     #   #   #   # # #   # # #   #     # #     # 
#   #   #     #     #     #   #     #   #   #   #   #   #   #   #     #   #   # 
# # #   # #   #     #     #   #     #   #   #   #   #   # #     #     #   #   # 
#   #   #     #     #     #   #     #   #   #   #   #   #   #   #     #   #     
#   #   # #   # #   # #   # # #     # # # # #   # # #   #   #   # #   # #     #

0

37,33

toilet<<<"Hello-world"|tr \"m \#

 #    #        ###    ###                                       ###        # 
 #    #  ###     #      #     ###         #     #  ###    # ##    #     #### 
 ###### ##  #    #      #    ## ##        ## # ## ## ##   ##  #   #    ## ## 
 #    # #####    #      #    #   #   ###   #####  #   #   #       #    #   # 
 #    # #####    ###    ###  #####          # #   #####   #       ###  ##### 

与以下内容相同:

echo "Hello-world" | toilet

man toilet

厕所-显示大号彩色字符

tr "'\"m" "#"所有"字符替换为#


tr的参数的转义比引用的短。我的意思tr \'\"m \#不是tr "'\"m" "#"
manatwork 2014年

哦,好人,我没有意识到。感谢@manatwork
fedorqui 2014年

等一下。该toilet输出没有单引号。为什么将它包含在tr的第一个参数中?仅仅tr \"m \#是不够的。
manatwork 2014年

@manatwork我想我需要更多咖啡:)
fedorqui 2014年

0

Smalltalk,151

尽管此高尔夫比赛已经结束,但仅供参考:

i:=((Form extent:115@14)displayString:'Hello world'x:0y:12;asImage).0to:13 do:[:y|i valuesAtY:y from:0to:114 do:[:x :p|({$#.$ }at:p+1)print].Stdout cr]

输出:

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

您只需要使用''(空格)和'#'字符(也包括换行符)。
Mukul Kumar 2014年

我的错; 输出来自先前的运行;该代码是正确的“ {$#。$} at:p + 1”。
blabla999
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.