Nghệ thuật ASCII, Hello Hello-World! '[Đóng]


39

Mục tiêu của bạn là viết chương trình ngắn nhất tạo ra "Hello-World!" như nghệ thuật ASCII.

Quy tắc :

  • Nó phải là con người có thể đọc được, tôi không quan tâm đến kích thước của nó (cols / hàng)
  • Đầu ra phải chỉ chứa khoảng trắng (""), vật sắc nhọn ("#") và dòng mới
  • Đầu ra phải hoạt động với phông chữ đơn cách (nhưng các chữ cái không cần thiết sử dụng phông chữ đơn cách)
  • Kết quả là, mỗi ký tự phải cách nhau ít nhất một khoảng trắng

Vui lòng thêm một tiêu đề với ngôn ngữ và số byte trong mã của bạn.


5
bash: 33 ký tự - pastebin.com/HZ1w8z8g Điều này có được chấp nhận không?
manatwork

4
Tại sao dấu gạch ngang mặc dù? ...
Timwi

1
Tôi cho rằng không thể hoặc khó có thể sử dụng một cái gì đó được xác định trước như HQ9 +.
manatwork

1
@PeterTaylor: Đầu ra bao gồm khoảng trắng và giá trị băm phải hoạt động với phông chữ đơn cách, nhưng các chữ cái được biểu thị bằng vô số các giá trị băm không cần phải có cùng chiều rộng.
Timwi

Câu trả lời:


18

Tôi hoàn toàn thích cái này

Perl, 126 116 114 102 98   87 (69) ký tự (chỉ ascii & không có phông chữ bên ngoài)

Cho đến nay, giải pháp ascii ngắn nhất không sử dụng bất kỳ phông chữ bên ngoài nào.

Chà, tôi muốn trình bày một số giải pháp tao nhã nhưng @Ilmari Karonen đã thách thức tôi với unpack... không nên làm điều đó :-)

Chà, mã ký tự 92 88 69 này tạo ra đầu ra không thể đọc được giống hệt như @Ilmari Karonen:

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

Biến thể thanh lịch hơn mà không cần giải nén (88 ký tự):

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

Nhưng tôi nghĩ như vậy |. | E | | .- |||., D! không có gì giống với Hello-World! và không được phép, vì vậy giải pháp thực sự ở đây - giải nén biến thể, 87 ký tự :

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

Đầu ra:

nhập mô tả hình ảnh ở đây

Biến thể thanh lịch hơn ở 98 ký tự:

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

Đầu ra:

nhập mô tả hình ảnh ở đây

Giải pháp cũ hơn (114 ký tự), loại mã hóa khác nhau:

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

Đầu ra:

nhập mô tả hình ảnh ở đây


Quên câu cảm thán ở cuối, tức là Hello-World! Ngoài ra, nên viết thường e, nhưng tôi biết bạn đã viết chữ thường để làm cho nó có thể đọc được dưới dạng phông chữ cao năm pixel ...

47

JavaScript, 178 byte

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"}

Nó hoạt động trong Firefox 27 Scratchpad.

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

Tôi nhận ra Arial :-D
Timwi

4
Đó là sở thích của tôi. Bạn đã sử dụng một phương pháp thú vị để đi đến giải pháp. Tuyệt vời!
Darth Egregious 6/214

2
Khéo léo, tôi tin rằng bạn vừa tạo Figlet cho JavaScript;)
WallyWest

Dagnammit, đây cũng là suy nghĩ đầu tiên của tôi! Đây là một upvote thay thế. :)
Jordan Gray

37

Toán học 101 99 98

Điều này rasterized biểu thức, thu được dữ liệu hình ảnh nhị phân, chuyển đổi từng 1 thành "#", mỗi 0 thành "" (không gian trống) và hiển thị đầu ra trong lưới 12 x 130 ký tự.

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

xin chào

Một nhân vật được tiết kiệm nhờ Jonathan Van Matre.


1
Tại sao độ dày khác nhau giữa các l?
MrZander

Tôi đã thực hiện rasterization trên biểu thức dưới dạng một hình ảnh duy nhất. Nếu tôi đã thực hiện nó từng chữ, chữ l sẽ giống hệt nhau. Ngoài ra, bằng cách tăng kích thước lưới rasterization, đầu ra có xu hướng tiếp cận chất lượng của các ký tự in. Nhưng một lưới lớn hơn dẫn đến "#" tương đối nhỏ hơn, đến mức chúng dường như chỉ là các pixel. Câu hỏi vẫn còn: tại sao 2 l trong một hình ảnh lại nhận được các trọng số khác nhau?
DavidC

3
@MrZander, đó chính là lý do phông chữ có gợi ý: Khi cố gắng điều chỉnh phông chữ thành lưới pixel có độ phân giải thấp, như trong nghệ thuật ASCII hoặc trên chiều rộng thân màn hình không bao giờ thực sự đồng nhất vì phông chữ có thể có các pixel rộng không thể tách rời ở mọi kích thước . Dưới đây là một lời giải thích tốt đẹp với hình ảnh.
Joey

1
có vẻ đẹp nhất
Ronan Dejhero

1
Jonathan Van Matre, Cảm ơn. Tham số đầu tiên có thể giảm xuống 99 nhưng tôi không muốn giảm thông số thứ hai, do chất lượng đầu ra. (Tôi nhận ra rằng đây là một thử thách chơi gôn, nhưng tôi có niềm tự hào của mình.)
DavidC

25

Delphi 85 byte

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

Tôi biết, đó không phải là giải pháp đẹp nhất nhưng không có quy tắc nào nói rằng bạn không thể sử dụng các nguồn lực bên ngoài.
Kết quả: Kết quả


12
+1 cho sự sáng tạo của việc sử dụng # làm nền thay vì nền trước.
gerrit

1
Bạn có thể khai báo s như TStringsthay thế. (Nhưng hãy giữ ngay lập tức với TStringList.)
manatwork 7/214

Là tệp bạn đang tải từ thứ gì đó thực sự được gửi cùng với Delphi, hoặc bạn đã tự viết nó? Nếu sau này, tôi nghĩ bạn cần tính độ dài của nó như là một phần của điểm số của bạn.
Ilmari Karonen

@Ilmari, tôi chắc chắn Delphi không gửi một tệp với nghệ thuật ASCII "Hello-World" :) Hơn nữa, nó được mô tả trong câu trả lời, rằng nó sử dụng các tài nguyên bên ngoài.
TLama

3
@TLama: Tôi cũng cho là vậy, tôi chỉ cố gắng diễn đạt một cách lịch sự. Quan điểm của tôi là, ngay cả khi tài nguyên bên ngoài được cho phép, chương trình này vẫn sẽ thất bại trên máy tính của bất kỳ ai ngoại trừ tác giả của nó (và trên thực tế, chúng tôi không có bằng chứng nào cho thấy nó thậm chí hoạt động trên máy tính của anh ta). Ngoài ra, tôi có thể đánh bại điểm số của anh ấy bằng kịch bản Perl sau : do X. Nội dung của "tài nguyên bên ngoài" Xkhông được chỉ định (nó hoạt động với tôi, không đủ sao?), Nhưng tôi đã cung cấp một vài gợi ý có thể bên dưới ...
Ilmari Karonen

15

Perl 5, 54 byte / 71 ký tự ASCII có thể in

Lưu ý: Đây là phiên bản thứ hai của câu trả lời này. Đối với phiên bản 64 byte / 95-char ban đầu sử dụng PHP và gzinflate (), hãy xem lịch sử của câu trả lời này .

Đây là phiên bản ASCII có thể in 71-char:

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

Phiên bản 54 byte chứa các ký tự không in được, vì vậy tôi đang cung cấp nó dưới dạng kết xuất hex. Trên các hệ thống Unixish, bạn có thể sử dụng xxd -rđể biến kết xuất hex thành tập lệnh Perl có thể thực thi:

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                           ...$.'

Cả hai cần phải được chạy với perl -M5.010để kích hoạt saytính năng Perl 5.10+ . Họ sẽ tạo ra đầu ra sau:

Ảnh chụp màn hình của "Hello-World!"  Nghệ thuật ASCII

(Được hiển thị dưới dạng ảnh chụp màn hình, vì chiều cao dòng lớn trên SE làm cho nghệ thuật ASCII trở nên xấu xí và khó đọc. Chữ thường "e" hơi khó xử, nhưng tôi tin rằng điều này đủ điều kiện để có thể đọc được, nếu chỉ như vậy.)


Thi thiên Nếu đầu ra của giải pháp ở trên cảm thấy quá tối giản đối với bạn, thì đây là biến thể 92 ký tự tạo ra đầu ra tương tự như giải pháp của Tomas :

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

Đây là một ảnh chụp màn hình:

Ảnh chụp màn hình của "Hello-World!"  Nghệ thuật ASCII


Pps. Tôi khá chắc chắn này ( GolfScript, 51 ký tự ) là giải pháp in-ASCII ngắn nhất, nếu bạn không đếm những cái mà chỉ gọi biểu ngữ / FIGLet hoặc cheat trong một số cách khác:

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

Đầu ra giống như đối với giải pháp Perl 71 char của tôi ở trên.


Tôi muốn nói rằng bạn vừa vượt qua biên giới dễ đọc :-)
Tomas

1
Nó dễ đọc hơn trong thiết bị đầu cuối của tôi so với ở đây trên SE, vì khoảng cách dòng lớn ở đây.
Ilmari Karonen

Ý tôi là, dù sao nó cũng không thể đọc được. BTW Tôi có thể tạo đầu ra của bạn trong 92 ký tự , không có thuật toán nén bên ngoài :-)
Tomas

@Tomas: Bạn nói đúng, zipping dường như không phải là câu trả lời chiến thắng ở đây. Tôi sẽ cho bạn +1 cho điều đó nếu tôi chưa có. BTW, tôi có thể làm điều đó trong 71 ký tự; xem ở trên. :-)
Ilmari Karonen

1
Ilmari, bạn không nên thách thức tôi với unpack:-) Tìm thấy một giải pháp gồm 69 ký tự (87 với đầu ra tốt đẹp của tôi).
Tomas

8

Shell + Figlet (35)

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

Đây là loại phông chữ gì? Những người chỉ trông giống như các nhân vật viết hoa nhỏ hơn.
Cruncher

đó là biểu ngữ -f bannerĐó là phông chữ đầu tiên tôi tìm thấy được sử dụng # thay vì * hoặc | và _.
nghiệt ngã


Thay đổi "90" thành "9" mang lại một thế giới xin chào cao và gầy, tuy nhiên vì OP không quan tâm đến các cột hoặc hàng, nên có thể chấp nhận được.
alexyorke

Đôi khi cử tri cản trở tôi. Làm thế nào điều này có được điểm net +8, nhưng câu trả lời con số khác nhận được điểm net là -3?
Chấn thương kỹ thuật số

8

Con trăn 260 215 186 152

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

Python 196 183 130 114 (nhưng xấu hơn)

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

Tôi đã sử dụng dữ liệu nén trong mã hóa base64. và mã giải mã nó từ mã hóa base64 và sau đó giải nén nó.


Wow, đó thực sự là kéo dài dễ đọc!

7

PHP - 183 byte

Sử dụng nghệ thuật ASCII của sebcap26 làm nguồn ...

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 Byte

(Tôi biết. Nhưng chỉ để hoàn thiện, cần phải có sự cân nhắc ^^ Nó sẽ không ngắn hơn nhiều, vì có rất ít sự lặp lại. Vòng lặp thứ nhất và thứ hai đã ...)

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

Thông dịch viên tại đây: http://koti.mbnet.fi/villes/php/bf.php


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

Kết hợp trình tạo số và hình ảnh của @ ASKASK với các vòng lặp của tôi và một số điều chỉnh bổ sung, chúng tôi nhận được:

Brainfuck, 343 339 336 334 byte

Trông xấu hơn phiên bản gốc của tôi.

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

(hình ảnh xem @ ASKASK's Trả lời)


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')

Đầu ra:

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

Giải trình:

Văn bản ASCII được nén thành một chuỗi trong đó mỗi bit đại diện cho một pixel :

  • 0 cho SPACE
  • 1 cho #

Một độ lệch 33 được áp dụng để chỉ nhận các ký tự có thể in được.


Dấu ngoặc và returncâu lệnh của hàm mũi tên chất béo đầu tiên là không cần thiết.
manatwork

@manatwork Mình đã cố gỡ nó ra nhưng rồi nó không còn được biên dịch nữa. Bạn có chắc chắn về điều đó không?
Florent


@manatwork Cảm ơn!
Florent

charCodeAt(0)có thể được giảm đến charCodeAt().
Chiru

4

Quét , 38 ký tự (76 byte)

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

Đầu ra:

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

4
Trang thông tin mã-golf cho biết "Nếu bạn sử dụng Unicode, số byte nên sử dụng UTF-8." Nếu tôi không nhầm, điều đó làm cho chương trình của bạn dài 114 byte . (76 byte bạn đề cập sẽ dành cho UTF-16 mà không có BOM.)
res

@res: Tôi đã thay đổi điều đó, vì nó không có ý nghĩa để yêu cầu điều đó. Trình thông dịch Sclipting của tôi hiểu UTF-16 rất tốt, vì vậy đây là một chương trình hợp lệ được mã hóa dưới dạng UTF-16.
Timwi

1
Timwi, vấn đề trường hợp
Tomas

3
@ user689 - thực sự là "Hello-World!" với một dấu chấm than ở cuối ...

1
Tôi cho rằng "được cộng đồng chấp nhận" có nghĩa là "được chấp nhận, mà không cần thảo luận về cộng đồng , bởi một số ít người có khả năng làm như vậy".
res

3

Brainfuck, 362 byte

Xin lỗi @ johannes-h, tôi đã thấy của bạn và được truyền cảm hứng để làm cho riêng tôi. Nó sử dụng kết hợp tạo số nhanh hơn lúc đầu và một hình ảnh đơn giản hơn để tạo ra kết quả với ít byte hơn. Tuy nhiên, nó không sử dụng các vòng lặp ở bất kỳ nơi nào khác vì vậy nó được tối ưu hóa.

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

tạo ra:

pic


Hừm. Thế hệ số ngắn hơn bao nhiêu? Vì việc thay đổi hình ảnh trông giống như gian lận với tôi (ít nhất là khi so sánh trực tiếp các giải pháp của chúng tôi - tất nhiên là hoàn toàn hợp lệ trong cuộc thi này) ^^ Tôi sẽ xem xét bạn sau này :) Bạn có thể thực hiện vòng lặp của tôi trước hai dòng tuy nhiên. Nó ngắn hơn rất nhiều (khoảng 10-20 byte nếu tôi nhớ chính xác)
Johannes H.

có phiên bản của bạn xuống còn 343 Byte, hãy xem câu trả lời của tôi
Julian H.

và thậm chí ngắn hơn, thay thế nhiều lần lặp lại bằng các vòng lặp. 339 bây giờ.
Julian H.

Tôi không có tiếng tăm gì để bình luận về bạn nhưng nếu bạn nhìn kỹ vào phiên bản mới của mình, bạn sẽ tìm thấy một "> <" trong đó có thể bị xóa để lấy đi hai byte :)
HỎI

3

ImageMagick + sed, 71 byte

Tôi không thấy bất kỳ mục ImageMagick nào khác, vì vậy đây là cổ phần muộn của tôi trong mặt đất:

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

Tôi nghĩ rằng sedphần có thể có thể được chơi golf thêm.

Hãy thử trực tuyến .

Đầu ra:

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


2

Bản thảo, 154 133

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

I E

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

Nguồn duy nhất của ASCII, nguồn cảm hứng cho nghệ thuật ASCII là câu trả lời của Julian H. :-)

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

(dễ đọc hơn trong thiết bị đầu cuối)

Perl, 102

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

Đầu ra tương tự như trên. Tôi biết tôi đã thua cả hai câu trả lời Perl ở trên, nhưng dù sao tôi cũng xuất bản nó. Ít nhất tôi đã thử và đang đi đúng hướng (và chưa thấy câu trả lời ngắn nhất) :-).


2

Pure Bash, không có tiện ích bên ngoài - 133 ký tự:

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

Sử dụng dịch chuyển phải và trái (chia và nhân cho 2) và xor để tìm một bit.

Dữ liệu phông chữ bị đánh cắp từ Blender / Ilmari Karonen.

Đã thử nghiệm trong Bash 3.2 và 4.2

Nhân tiện, đây chỉ là 166 ký tự:

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

1

Trăn 3, 114

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

Đầu ra ( eW cao 4 ký tự bị đánh cắp từ @Ilmari Karonen ):

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

Và một cái ngắn hơn (107):

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

Đầu ra:

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

Nó hầu như không thể đọc được. Thế giới của bạn từ đầu ra thứ 2 thực sự là Uworld.
Silviu Burcea

@SilviuBurcea: Nó trông tốt hơn trên một trình giả lập thiết bị đầu cuối thực tế. Ngoài ra, "Con người có thể đọc được" cung cấp cho bạn một chút phòng ngọ nguậy. Tôi chắc chắn bạn có thể đoán những gì `" HELLO ORLD! " có nghĩa.
Máy xay sinh tố

Sử dụng hằng số hex và cạo một vài ký tự
Floris

@Floris: Tôi đã thử nó. Tiền tố hai ký tự làm cho chúng chỉ dài đến khoảng 20 chữ số.
Máy xay sinh tố

1

Các ký tự Python 154, (kích thước Char 5X7)

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

Đầu ra

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

1

Bash:

(103 89 byte)

Mã số:

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

Đầu ra:

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

Nhỏ hơn, nhưng ít đọc hơn (Dựa trên http://mckgyver.pbworks.com/f/1240440791/3PixelFont.jpg ):

Mã số:

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

Đầu ra:

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

1

Javascript / ES6 (108 byte)

Sao chép vào bảng điều khiển:

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

Đầu ra:

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

(Cần trình duyệt tương thích ECMAScript6, ví dụ: Firefox 22+)

Lấy cảm hứng từ @maximeeuziere, @ p01, @aemkei


.join('\n')có thể được giảm xuống .join(` `)nơi không gian là một ký tự dòng mới thực sự.
Chiru

1

Tác giả: xem, aemkei, p01, jonas

Thực hiện điều này trong bảng điều khiển JS.

JavaScript, trình duyệt chéo, 133 132 126 117 byte

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

JavaScript, ES6, hoạt động trên Firefox, 108 byte

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

Kết quả:

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

@ p01 đã tạo một phiên bản ngắn hơn (118 byte) tại đây: twitter.com/p01/status/433230019419471872
aemkei

1

HTML, 209 ký tự

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

Điều này có tính không? :)


1

Shell, 20 ký tự:

banner Hello-world\!

Để làm việc này, tất nhiên bạn cần bannerchương trình. Trên Debian, bạn có thể lấy nó bằng cách cài đặt bsdmainutilsgói.

Điều này in một phiên bản hiển thị đẹp mắt của tin nhắn của bạn, được thiết kế để in trên một trong những máy in nguồn cấp liên tục cũ, do đó, đầu ra của văn bản trên dài 322 dòng rộng 123 cột và bạn xoay bản in ra để đọc thông điệp. Bạn có thể treo giấy kết quả lên tường dưới dạng biểu ngữ, do đó có tên.

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

EDIT: Có vẻ như Debian cũng có sysvbannergói cài đặt chương trình biểu ngữ in văn bản theo chiều ngang để hiển thị trên thiết bị đầu cuối. Tuy nhiên, điều này chỉ in 10 ký tự đầu tiên của tin nhắn, vì vậy thật khó chịu cho vấn đề golf-code này!


1
Tôi tin rằng bạn có nghĩa là để viết banner hello-world.
Floris

@Floris, cảm ơn vì đã ngẩng cao đầu. Đã sửa.
steveha

1
Lưu ý rằng banner xuất hiện trên Unix v7 vào năm 1979 và được tìm thấy trên hầu hết mọi Unix.
sch

@sch, tôi đồng ý rằng bannerhầu như mọi UNIX đều có sẵn. Tôi chỉ đặt gói Debian làm bằng chứng thuận tiện rằng tôi sẽ không tạo ra thứ gì đó, cho những người không biết về nó. Ngày nay, tôi sẽ không tìm thấy bannercài đặt theo mặc định trên UNIX, bất kỳ điều gì tôi mong đợi sẽ tìm thấy một máy in nguồn cấp liên tục trong phòng thí nghiệm máy tính nữa. Nhưng bất kỳ mã golf nào làm văn bản biểu ngữ thực sự phải có bannerchương trình trong đó ở đâu đó. Đó là một phần của lịch sử văn hóa phong phú của chúng tôi như là chuyên viên máy tính. :-)
steveha

1

bash, 175 170 byte

Bạn cần lãng phí khá nhiều ký tự để tạo ra một đầu ra đẹp !

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

Đầu ra:

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

Bạn có thể làm cho nó nhỏ hơn với lzma / unlzma
Emmanuel

0

F # - 204 ký tự

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))

Đầu ra:

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

0

Python + pyfiglet - 87 ký tự

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

Đầu ra

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

Để cài đặt pyfiglet, chạy:

$ pip install pyfiglet

0

Python với pyfiglet: 66 sử dụng argv, 69 mà không

66:

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

69:

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

linh sam phải được gọi là, ví dụ:

python asciiart.py 'Xin chào thế giới!'

thứ hai:

trăn asciiart.py.

Đầu ra:

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

(Chà, nó trông hơi nhảm nhí với phông chữ này. Tuy nhiên :))

[sửa] loại bỏ dấu gạch ngang lỗi thời khỏi đối số.


Tại sao dấu gạch ngang phía trước đầu ra?
Ilmari Karonen

Sai lầm của tôi, đó là đầu ra từ một người sử dụng argv, nơi tôi đã sử dụng dấu gạch ngang trước đối số (vấn đề về thói quen, vì tôi luôn sử dụng bash). Tôi sẽ chỉnh sửa nó, cảm ơn bạn.
Taku

0

Javascript 137 (134)

Sử dụng các bit của số nguyên để thể hiện sắc nét một khoảng trắng. Đã thử nghiệm với Firefox 27.

137 ký tự

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 ký tự (xoay 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)

Có một không gian bổ sung giữa các ký tự để làm cho nó dễ đọc hơn. Về mặt kỹ thuật, đây là một giải pháp 125 ký tự.

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

Đầu ra:

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

0

Bash 37 , 33

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

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

Điều này giống như:

echo "Hello-world" | toilet

Từ man toilet

TOIlet - hiển thị nhân vật lớn đầy màu sắc

Với tr "'\"m" "#"tất cả các "ký tự được thay thế bằng #.


trCác tham số sẽ được thoát ngắn hơn so với trích dẫn. Ý tôi là tr \'\"m \#thay vì tr "'\"m" "#".
manatwork

Ồ, tôi không biết điều đó. Cảm ơn @manatwork
fedorqui

Đợi một chút. Các toiletđầu ra không có trích dẫn duy nhất. Tại sao bạn đưa nó vào trtham số 1? Chỉ cần tr \"m \#là đủ.
manatwork

@manatwork Tôi nghĩ tôi cần thêm cà phê :)
fedorqui

0

Smalltalk, 151

Mặc dù trò chơi golf này đã kết thúc, để tham khảo:

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]

đầu ra:

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

Bạn chỉ phải sử dụng các ký tự '' (dấu cách) và '#' (cũng là ký tự dòng mới).
Mukul Kumar

lỗi của tôi; đầu ra là từ lần chạy trước; mã chính xác "{$ #. $} tại: p + 1".
blabla999
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.