ศิลปะ ASCII“ Hello-World!” [ปิด]


39

เป้าหมายของคุณคือการเขียนโปรแกรมที่สั้นที่สุดที่ส่งออก "Hello-World!" เป็นศิลปะ ASCII

กฎ:

  • มันต้องเป็นมนุษย์ที่อ่านได้ฉันไม่สนใจขนาดมัน (cols / rows)
  • เอาต์พุตต้องมีช่องว่าง (""), ชาร์ป ("#") และบรรทัดใหม่เท่านั้น
  • ผลลัพธ์จะต้องทำงานกับแบบอักษร monospaced (แต่ตัวอักษรไม่จำเป็นต้องใช้แบบอักษรแบบ monospaced)
  • ในผลลัพธ์อักขระแต่ละตัวต้องแยกจากกันด้วยช่องว่างอย่างน้อยหนึ่งช่อง

โปรดเพิ่มชื่อด้วยภาษาและจำนวนไบต์ในรหัสของคุณ


5
bash: 33 ตัวอักษร - pastebin.com/HZ1w8z8gสิ่งนี้ยอมรับได้หรือไม่?
จัดการ

4
ทำไมถึงต้องใส่ยัติภังค์ ... ?
Timwi

1
ฉันคิดว่าจะใช้สิ่งที่กำหนดไว้ล่วงหน้าอย่าง HQ23
จัดการ

1
@PeterTaylor: ผลลัพธ์ที่ประกอบด้วยช่องว่างและแฮชต้องทำงานกับแบบอักษร monospaced แต่ตัวอักษรที่แสดงโดย hash มากมายเหลือเฟือไม่จำเป็นต้องมีความกว้างเท่ากัน
Timwi

1
ที่เกี่ยวข้อง แต่แตกต่างกัน: พูดว่า“ สวัสดี” สู่โลกศิลปะ ASCII
Ilmari Karonen

คำตอบ:


18

ฉันมีความสุขอย่างนี้

Perl, 126 116 114 102 98   87 (69) ตัวอักษร (ascii เท่านั้นและไม่มีแบบอักษรภายนอก)

ณ ตอนนี้โซลูชัน ascii ที่สั้นที่สุดซึ่งไม่ได้ใช้แบบอักษรภายนอกใด ๆ

ฉันต้องการนำเสนอทางออกที่หรูหรา แต่ @Ilmari Karonen ท้าทายฉันด้วยunpack... ไม่ควรทำอย่างนั้น :-)

ดีรหัสตัวอักษร92 88 69 นี้สร้างผลลัพธ์ที่ไม่สามารถอ่านได้ uglish เหมือนกับ @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

เอาท์พุท:

ป้อนคำอธิบายรูปภาพที่นี่


ลืมเครื่องหมายอัศเจรีย์ตอนท้ายนั่นคือสวัสดีโลก! นอกจากนี้ควรเป็นตัวพิมพ์เล็กeแต่ฉันรู้ว่าคุณใช้ตัวพิมพ์เล็กเพื่อให้สามารถอ่านได้ในแบบอักษรสูงห้าพิกเซล ...

47

จาวาสคริปต์, 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

4
นี่คือสิ่งที่ฉันชอบ คุณใช้วิธีการที่น่าสนใจเพื่อแก้ไขปัญหา ยอดเยี่ยม!
Darth Egregious

2
ฉันเชื่อว่าคุณเพิ่งสร้าง Figlet สำหรับ JavaScript;)
WallyWest

Dagnammit นี่เป็นความคิดแรกของฉันด้วย! นี่คือ upvote แทน :)
Jordan Gray

37

Mathematica 101 99 98

การทำเช่นนี้จะทำให้นิพจน์ได้รับข้อมูลภาพไบนารีแปลงแต่ละ 1 ถึง "#" แต่ละ 0 ถึง "" (พื้นที่ว่าง) และแสดงผลลัพธ์ในตาราง 12 ถึง 130 อักขระ

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

สวัสดี

ตัวละครตัวหนึ่งต้องประหยัดขอบคุณ Jonathan Van Matre


1
ทำไมความหนาจึงแตกต่างกันระหว่าง l
MrZander

ฉันทำ rasterization บนนิพจน์เป็นรูปภาพเดียว ถ้าฉันทำมันด้วยตัวอักษรตัวอักษร l ก็จะเหมือนกัน นอกจากนี้การเพิ่มขนาดกริด rasterization เอาต์พุตก็มีแนวโน้มที่จะเข้าใกล้คุณภาพของอักขระที่พิมพ์ออกมา แต่กริดที่ใหญ่ขึ้นส่งผลให้ "#" มีขนาดค่อนข้างเล็กลงจนถึงจุดที่ปรากฏเป็นพิกเซลเท่านั้น คำถามยังคงอยู่: ทำไมภาพ 2 l จึงมีน้ำหนักต่างกัน
DavidC

3
@MrZander นั่นเป็นเหตุผลที่ทำให้แบบอักษรมีนัย: เมื่อพยายามที่จะใส่ฟอนต์ลงในกริดพิกเซลแบบความละเอียดต่ำเช่นใน ASCII art หรือความกว้างของก้านหน้าจอจะไม่เหมือนกันจริง ๆ เพราะฟอนต์ไม่สามารถ . นี่คือคำอธิบายที่ดีพร้อมรูปภาพ
Joey

1
น่าจะดูดีที่สุด
Ronan Dejhero

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

1
คุณสามารถประกาศ s TStringsแทน (แต่ให้การอินสแตนซ์ด้วยTStringList)
จัดการ

ไฟล์ที่คุณกำลังโหลดจากบางสิ่งที่มาพร้อมกับ Delphi หรือคุณเขียนเอง? หากหลังฉันคิดว่าคุณต้องนับความยาวของมันเป็นส่วนหนึ่งของคะแนนของคุณ
Ilmari Karonen

@Ilmari ฉันมั่นใจว่า Delphi ไม่ได้ส่งไฟล์พร้อมกับศิลปะ ASCII "Hello-World" :) ยิ่งไปกว่านั้นมันอธิบายไว้ในคำตอบว่ามันใช้ทรัพยากรภายนอก
TLama

3
@TLama: ฉันก็คิดอย่างนั้นเหมือนกันฉันแค่พยายามที่จะพูดอย่างสุภาพ ประเด็นของฉันคือแม้ว่าทรัพยากรภายนอกจะได้รับอนุญาตโปรแกรมนี้จะยังคงล้มเหลวในคอมพิวเตอร์ของผู้อื่นยกเว้นของผู้เขียน (และในความเป็นจริงเราไม่มีข้อพิสูจน์ว่าสามารถใช้งานได้กับคอมพิวเตอร์ของเขา) นอกจากนี้ผมสามารถเอาชนะคะแนนของเขากับสคริปต์ Perl do Xต่อไปนี้: เนื้อหาของ "ทรัพยากรภายนอก" Xไม่มีการระบุไว้ (ใช้ได้กับฉันไม่เพียงพอหรือไม่) แต่ฉันได้ให้คำแนะนำที่เป็นไปได้ด้านล่าง ...
Ilmari Karonen

15

Perl 5, 54 ไบต์ / 71 ตัวอักษร ASCII ที่พิมพ์ได้

หมายเหตุ:นี่เป็นรุ่นที่สองของคำตอบนี้ สำหรับเวอร์ชัน 64-byte / 95-char ดั้งเดิมโดยใช้ PHP และ gzinflate () ดูประวัติของคำตอบนี้

นี่คือรุ่น ASCII ที่พิมพ์ได้ 71 char:

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

รุ่น 54- ไบต์มีอักขระที่ไม่สามารถพิมพ์ได้ดังนั้นฉันจึงให้มันเป็นฐานสิบหก บนระบบ Unixish คุณสามารถใช้xxd -rเปลี่ยน hex dump กลับไปเป็นสคริปต์ 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เพื่อเปิดใช้งานsayคุณสมบัติPerl 5.10+ พวกเขาจะผลิตผลลัพธ์ต่อไปนี้:

สกรีนช็อตของ "Hello-World!"  ศิลปะ ASCII

(แสดงเป็นสกรีนช็อตเนื่องจากความสูงของบรรทัดบน SE ทำให้ ASCII เป็นศิลปะที่น่าเกลียดและอ่านยากตัวพิมพ์เล็ก "e" นั้นค่อนข้างน่าอึดอัดใจ แต่ฉันเชื่อว่านี่เป็นคุณสมบัติที่อ่านได้


ps หากผลลัพธ์ของการแก้ปัญหาข้างต้นให้ความรู้สึกที่เรียบง่ายเกินไปสำหรับคุณนี่คือตัวแปร92 ตัวที่สร้างผลลัพธ์คล้ายกับโซลูชันของ Tomas :

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

นี่คือภาพหน้าจอ:

สกรีนช็อตของ "Hello-World!"  ศิลปะ ASCII


pps ฉันค่อนข้างแน่ใจว่านี่ ( GolfScript, 51 ตัวอักษร ) เป็นโซลูชั่น ASCII ที่พิมพ์ได้สั้นที่สุดหากคุณไม่นับจำนวนที่เรียก banner / FIGLet หรือโกงด้วยวิธีอื่น:

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

ผลลัพธ์เป็นเช่นเดียวกับโซลูชัน Perl 71 ตัวของฉันด้านบน


ฉันว่าคุณเพิ่งข้ามพรมแดนของการอ่าน :-)
โทมัส

1
มันสามารถอ่านได้ในเทอร์มินัลของฉันมากกว่าที่นี่ใน SE เนื่องจากระยะห่างบรรทัดใหญ่ที่นี่
Ilmari Karonen

ฉันหมายความว่ามันอ่านไม่ได้อยู่ดี BTW ฉันสามารถผลิตผลลัพธ์ของคุณใน 92 ตัวอักษรโดยไม่มีอัลกอริธึมการบีบอัดภายนอก :-)
Tomas

@ โทมัส: ถูกต้องการซิปดูเหมือนจะไม่ใช่คำตอบที่ชนะที่นี่ ฉันจะให้ +1 แก่คุณถ้าฉันยังไม่ได้ทำ BTW ฉันสามารถทำได้ใน 71 ตัวอักษร; ดูด้านบน. :-)
Ilmari Karonen

1
Ilmari, คุณไม่ควรท้าทายฉันด้วยunpack:-) พบวิธีแก้ปัญหา 69 ตัวอักษร (87 กับผลลัพธ์ที่ดีของฉัน)
โทมัส

8

เชลล์ + ฟิกเล็ต (35)

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

แบบอักษรนี้เป็นแบบใด ตัวละครเหล่านั้นดูเหมือนตัวพิมพ์ใหญ่และเล็ก
Cruncher

it banner -f bannerมันเป็นตัวอักษรตัวแรกที่ฉันพบว่าใช้ # แทน * หรือ | และ _
น่ากลัว


การเปลี่ยน "90" เป็น "9" ให้ผลกับโลกสวัสดีที่สูงและผอมอย่างไรก็ตามเนื่องจาก OP ไม่สนใจคอลัมน์หรือแถวจึงควรยอมรับ
alexyorke

บางครั้งผู้มีสิทธิเลือกตั้งทำให้ยุ่งเหยิงฉัน ทำไมมันถึงได้คะแนนสุทธิเป็น +8 แต่คำตอบของ figlet อื่น ๆจะได้คะแนนสุทธิ -3?
Digital Trauma

8

Python 260 215 186 152

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

Python 196 183 130 114 (แต่น่าเกลียด)

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

ฉันใช้ข้อมูลซิปในการเข้ารหัส base64 และรหัสถอดรหัสจากการเข้ารหัส base64 แล้วทำการคลายซิป


ว้าวนั่นเป็นการยืดความชัดเจนจริงๆ!

7

PHP - 183 ไบต์

การใช้งาน ASCII ของ sebcap26 เป็นแหล่งข้อมูล ...

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

(ฉันรู้ แต่เพื่อความสมบูรณ์จะต้องมี brainfuck ^^ มันจะไม่สั้นลงมากเพราะมีการทำซ้ำ ๆ น้อย ๆ วงแรกและวงที่สองอยู่แล้ว ... )

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

ล่ามที่นี่: http://koti.mbnet.fi/villes/php/bf.php


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

เมื่อรวมการสร้างตัวเลขและรูปภาพของ @ ASKASK เข้ากับลูปของฉันและการปรับแต่งเพิ่มเติมเราได้:

Brainfuck, 343 339 336 334 Bytes

ดูน่าเกลียดกว่ารุ่นดั้งเดิมของฉัน

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

(ภาพดูคำตอบของ @ 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ไม่จำเป็นต้องใช้วงเล็บและคำสั่งฟังก์ชั่นลูกศรไขมันครั้งแรก
จัดการ

@ การทำงานฉันพยายามที่จะลบมัน แต่แล้วมันก็ไม่ได้รวบรวม คุณแน่ใจหรือไม่
Florent


@ การจัดการขอบคุณ!
Florent

charCodeAt(0)สามารถลดลงcharCodeAt()ไป
Chiru

4

Sclipting , 38 ตัวอักษร (76 ไบต์)

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

เอาท์พุท:

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

4
หน้าข้อมูลรหัสกอล์ฟบอกว่า "ถ้าคุณใช้ Unicode การนับจำนวนไบต์ควรใช้ UTF-8" ถ้าฉันไม่ผิดที่ทำให้โปรแกรมของคุณมีความยาว114 ไบต์ (76 ไบต์ที่คุณพูดถึงจะเป็น UTF-16 ที่ไม่มี BOM)
res

@res: ฉันเปลี่ยนมันเพราะมันไม่มีเหตุผลที่จะต้องการมัน ล่าม Sclipting ของฉันเข้าใจ UTF-16 ได้ดีดังนั้นจึงเป็นโปรแกรมที่ถูกเข้ารหัสเป็น UTF-16
Timwi

1
Timwi คดีสำคัญ
Tomas

3
@ user689 - จริงๆแล้ว "Hello-World!" ด้วยเครื่องหมายอัศเจรีย์ท้าย ...

1
ฉันคิดว่า "ได้รับการยอมรับจากชุมชน" หมายถึง "ได้รับการยอมรับโดยไม่ต้องมีการอภิปรายในชุมชนโดยคนจำนวนน้อยที่มีอำนาจในการทำเช่นนั้น"
res

3

Brainfuck, 362 ไบต์

ขออภัย @ johannes-h ฉันเห็นคุณและเป็นแรงบันดาลใจให้เป็นของตัวเอง มันใช้การรวมกันของการสร้างตัวเลขที่เร็วขึ้นที่จุดเริ่มต้นและภาพที่เรียบง่ายเพื่อสร้างผลลัพธ์ในไบต์ที่น้อยลง อย่างไรก็ตามมันไม่ได้ใช้ลูปที่อื่นดังนั้นจึงเหมาะสำหรับการปรับให้เหมาะสม

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

ซึ่งสร้าง:

pic


ฮึ่ม การสร้างหมายเลขสั้นลงเท่าใด 'ทำให้การเปลี่ยนภาพดูเหมือนว่าโกงฉัน (อย่างน้อยเมื่อเปรียบเทียบโซลูชั่นของเราโดยตรง - ใช้ได้อย่างสมบูรณ์ในการประกวดครั้งนี้แน่นอน) ^^ แต่ฉันจะไปหาคุณในภายหลัง :) คุณสามารถลูปเป็นครั้งแรก สองบรรทัดอย่างไรก็ตาม มันสั้นกว่ามาก (ประมาณ 10-20 bytes ถ้าฉันจำได้ถูกต้อง)
Johannes H.

ทำให้รุ่นของคุณลดลงเหลือ 343 Byte ดูคำตอบของฉัน
Johannes H.

และสั้นลงแทนที่การวนซ้ำมากขึ้นด้วยลูป 339 ในขณะนี้
Johannes H.

I dont มีชื่อเสียง neough ความคิดเห็นกับคุณ แต่ถ้าคุณมองอย่างใกล้ชิดที่รุ่นใหม่ของคุณคุณจะได้พบกับ "> <" ในการมีที่สามารถลบได้ที่จะไปไบต์ที่สอง :)
ASKASK

3

ImageMagick + sed, 71 ไบต์

ฉันไม่เห็นรายการ ImageMagick อื่น ๆ ดังนั้นนี่คือเงินเดิมพันสุดท้ายของฉัน:

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

ฉันคิดว่าsedส่วนนี้น่าจะเล่นกอล์ฟได้มากกว่านี้

ลองมันออนไลน์

เอาท์พุท:

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


2

Postscript, 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 
=

ASCII-source เท่านั้นแรงบันดาลใจสำหรับ ASCII-art คือคำตอบของ Johannes H. :-)

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

(อ่านได้มากขึ้นใน terminal)

Perl, 102

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

เอาต์พุตเหมือนข้างต้น ฉันรู้ว่าฉันหลงทางทั้งคำตอบ Perl ข้างต้น แต่ฉันก็เผยแพร่ต่อไป อย่างน้อยฉันก็พยายามและเคลื่อนไหวไปในทิศทางที่ถูกต้อง (และไม่เคยเห็นคำตอบที่สั้นที่สุด) :-)


2

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

เอาท์พุท ( eสูง 4 ตัวอักษรและWถูกขโมยจาก@Ilmari Karonen ):

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

และอันที่สั้นกว่า (107):

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

เอาท์พุท:

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

ส่วนใหญ่อ่านไม่ได้ โลกของคุณจากผลลัพธ์ที่ 2 คือ UWorld จริงๆแล้ว
Silviu Burcea

@SilviuBurcea: มันดูดีขึ้นเมื่อจำลองเทอร์มินัลจริง นอกจากนี้ "มนุษย์สามารถอ่านได้" ยังช่วยให้คุณมีห้องกระดิกเล็กน้อย ฉันแน่ใจว่าคุณสามารถคาดเดาสิ่งที่ "" HELLO LDORLD! " วิธี
ปั่น

ใช้ค่าคงที่ฐานสิบหกและโกนอักขระบางตัวออก
Floris

@ Floris: ฉันลองแล้ว คำนำหน้าอักขระสองตัวทำให้พวกเขายาวจนถึงประมาณ 20 หลัก
เครื่องปั่น

1

Python 154 ตัวอักษร (ขนาด Char 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

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


1

เชลล์, 20 ตัวอักษร:

banner Hello-world\!

เพื่อให้ทำงานได้แน่นอนคุณต้องมีbannerโปรแกรม บน Debian คุณสามารถรับได้โดยการติดตั้งbsdmainutilsแพ็คเกจ

รุ่นนี้พิมพ์ข้อความที่แสดงผลได้อย่างสวยงามออกแบบมาเพื่อพิมพ์บนหนึ่งในเครื่องพิมพ์ป้อนต่อเนื่องรุ่นเก่าดังนั้นผลลัพธ์ของข้อความด้านบนคือ 322 บรรทัดยาว 123 คอลัมน์กว้างและคุณเปิดงานพิมพ์เพื่ออ่าน ข้อความ. คุณสามารถแขวนกระดาษที่เกิดขึ้นบนผนังเป็นแบนเนอร์ดังนั้นชื่อ

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

แก้ไข: ดูเหมือน Debian ยังมีsysvbannerแพคเกจที่ติดตั้งโปรแกรมแบนเนอร์ที่พิมพ์ข้อความในแนวนอนเพื่อแสดงบนเทอร์มินัล อย่างไรก็ตามข้อความนี้พิมพ์ตัวอักษร 10 ตัวแรกเท่านั้นดังนั้นมันจึงเป็นเรื่องที่น่ารำคาญสำหรับปัญหาเรื่องรหัสกอล์ฟ!


1
banner hello-worldผมเชื่อว่าคุณหมายถึงการเขียน
Floris

@ Floris ขอบคุณสำหรับการเฮด แก้ไขแล้ว.
steveha

1
โปรดทราบว่าแบนเนอร์ปรากฏบน Unix v7 ในปี 1979 และพบได้ในแทบทุก Unix
sch

@sch ฉันเห็นด้วยว่าbannerมีให้สำหรับแทบทุก UNIX ฉันเพิ่งวางแพคเกจ Debian ไว้เพื่อเป็นหลักฐานยืนยันว่าฉันไม่ได้ทำอะไรเพื่อคนที่ไม่รู้เรื่องเลย วันนี้ฉันไม่คาดหวังว่าจะพบการbannerติดตั้งเป็นค่าเริ่มต้นใน UNIX มากกว่าที่ฉันคาดหวังว่าจะได้พบกับเครื่องพิมพ์แบบป้อนกระดาษต่อเนื่องในห้องปฏิบัติการคอมพิวเตอร์อีกต่อไป แต่กอล์ฟรหัสใด ๆ ในการทำข้อความแบนเนอร์ควรจะมีbannerโปรแกรมอยู่ที่ใดที่หนึ่ง มันเป็นส่วนหนึ่งของประวัติศาสตร์วัฒนธรรมอันยาวนานของเราในฐานะคอมพิวเตอร์เกินบรรยาย :-)
steveha

1

ทุบตี, 175 170 ไบต์

คุณต้องเสียตัวละครไปสักสองสามตัวเพื่อให้ได้ผลลัพธ์ที่ดี

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

เอาท์พุท:

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

คุณสามารถทำให้มันเล็กลงด้วย lzma / unlzma
Emmanuel

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

Python กับ pyfiglet: 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'))

ภาคเรียนจะต้องถูกเรียกว่าเป็นตัวอย่างเช่น:

python asciiart.py 'Hello-World!'

สอง:

python asciiart.py

เอาท์พุท:

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

(ก็ดูเหมือนว่าเส็งเคร็งกับตัวอักษรนี้อย่างไรก็ตาม :))

[แก้ไข] ลบเส้นประล้าสมัยจากการโต้แย้ง


ทำไมเส้นประเสริมด้านหน้าของเอาท์พุท
Ilmari Karonen

ความผิดพลาดของฉันนั่นคือผลลัพธ์จากสิ่งที่ใช้ argv ที่ฉันใช้เส้นประก่อนอาร์กิวเมนต์ (เรื่องของนิสัยเพราะฉันใช้ bash ตลอดเวลา) ฉันจะแก้ไขมันขอบคุณ
Taku

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

Bash 37 , 33

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

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

ซึ่งเหมือนกับ:

echo "Hello-world" | toilet

จาก man toilet

TOIlet - แสดงอักขระที่มีสีสันขนาดใหญ่

ด้วยtr "'\"m" "#"ทุกตัวอักษรจะถูกแทนที่ด้วย"#


trพารามิเตอร์ของจะสั้นกว่าการยกเว้น ผมหมายถึงแทนtr \'\"m \# tr "'\"m" "#"
จัดการ

โอ้ดีมากฉันไม่ทราบเลย ขอบคุณ @manatwork
fedorqui

รอสักครู่. toiletเอาต์พุตไม่มีเครื่องหมายคำพูดเดี่ยว ทำไมคุณรวมไว้ในtrพารามิเตอร์ที่ 1 ของ เพียงแค่tr \"m \#เป็นพอ
จัดการ

@manatwork ฉันคิดว่าฉันต้องกาแฟมากขึ้น :)
fedorqui

0

สมอลล์ทอล์ค, 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

ความผิดพลาดของฉัน; เอาท์พุทมาจากการทำงานก่อนหน้า; รหัสถูกต้อง "{$ #. $} ที่: p + 1"
blabla999
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.