Seni ASCII “Hello-World!” [Ditutup]

39

Tujuan Anda adalah menulis program terpendek yang menghasilkan "Hello-World!" sebagai seni ASCII.

Aturan:

  • Itu harus dapat dibaca manusia, saya tidak peduli tentang ukurannya (cols / rows)
  • Keluaran harus hanya berisi spasi (""), benda tajam ("#") dan baris baru
  • Output harus bekerja dengan font monospace (tetapi huruf-huruf tidak perlu menggunakan font monospace)
  • Dalam hasilnya, setiap karakter harus dipisahkan satu sama lain oleh setidaknya satu spasi

Silakan tambahkan judul dengan bahasa dan jumlah byte dalam kode Anda.

sebcap26
sumber
5
bash: 33 karakter - pastebin.com/HZ1w8z8g Apakah ini dapat diterima?
manatwork
4
Mengapa tanda hubung? ...
Timwi
1
Saya kira sulit atau tidak mungkin sulit menggunakan sesuatu yang telah ditentukan seperti HQ9 +.
manatwork
1
@PeterTaylor: Output yang terdiri dari spasi dan hash harus bekerja dengan font monospace, tetapi huruf-huruf yang diwakili oleh kebanyakan hash tidak semua harus memiliki lebar yang sama.
Timwi
1
Terkait, tetapi berbeda: Ucapkan "Halo" kepada dunia dalam seni ASCII
Ilmari Karonen

Jawaban:

18

Saya benar-benar menikmati yang ini

Perl, 126 116 114 102 98   87 (69) karakter (hanya ascii & tidak ada font eksternal)

Sampai sekarang solusi ascii terpendek yang tidak menggunakan font eksternal.

Yah, saya ingin menghadirkan beberapa solusi elegan tetapi @Ilmari Karonen menantangku unpack... seharusnya tidak melakukan itu :-)

Nah, kode karakter 92 88 69 ini menghasilkan keluaran terbaca uglish yang identik dengan @Ilmari Karonen:

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

Varian yang lebih elegan tanpa membongkar (88 karakter):

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

Tapi saya pikir seperti |. | E || .- |||., D! sesuatu yang menyerupai Hello-World! dan tidak boleh diizinkan, jadi solusi nyata ada di sini - bongkar varian, 87 karakter :

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

Keluaran:

masukkan deskripsi gambar di sini

Varian yang lebih elegan di 98 karakter:

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

Keluaran:

masukkan deskripsi gambar di sini

Solusi yang lebih lama (114 karakter), berbagai jenis pengkodean:

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

Keluaran:

masukkan deskripsi gambar di sini

Tomas
sumber
Lupa tanda seru di akhir, yaitu Hello-World! Juga, harus huruf kecil e, tapi saya tahu Anda melakukan huruf besar untuk membuatnya dapat dibaca sebagai font lima piksel tinggi ...
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"}

Itu bekerja di Firefox 27 Scratchpad.

#   #        #  #          #   #   #          #     #  #
#   #        #  #          #  # #  #          #     #  #
#   #   ##   #  #   ##      # # # #   ##   ## #   ###  #
#####  #  #  #  #  #  #     # # # #  #  #  #  #  #  #  #
#   #  ####  #  #  #  # ##  # # # #  #  #  #  #  #  #  #
#   #  #     #  #  #  #     # # # #  #  #  #  #  #  #   
#   #   ###  #  #   ##       #   #    ##   #  #   ###  #
sebcap26
sumber
Saya kenal Arial :-D
Timwi
4
Ini adalah favorit saya. Anda telah menggunakan metode yang menarik untuk sampai pada solusi. Hebat!
Darth Egregious
2
Ingenious, saya yakin Anda baru saja membuat Figlet untuk JavaScript;)
WallyWest
Dagnammit, ini juga pikiran pertamaku! Berikut ini adalah upvote. :)
Jordan Gray
37

Mathematica 101 99 98

Ini meraster ekspresi, memperoleh data gambar biner, mengonversi masing-masing 1 menjadi "#", masing-masing 0 menjadi "" (ruang kosong) dan menampilkan output dalam kisi 12 dengan 130 karakter.

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

Halo

Satu karakter hemat berkat Jonathan Van Matre.

DavidC
sumber
1
Mengapa ketebalannya bervariasi antara huruf l?
MrZander
Saya melakukan rasterisasi pada ekspresi sebagai gambar tunggal. Jika saya melakukannya huruf demi huruf, huruf l akan sama. Juga, dengan meningkatkan ukuran grid rasterisasi, output cenderung mendekati kualitas karakter yang dicetak. Tetapi kotak yang lebih besar menghasilkan "#" yang relatif lebih kecil, sampai-sampai mereka tampak hanya piksel. Pertanyaannya tetap: mengapa 2 l dalam gambar menerima bobot yang berbeda?
DavidC
3
@ MrZander, itulah alasan utama font mengisyaratkan: Ketika mencoba memasukkan font ke dalam pixel grid beresolusi rendah, seperti dalam ASCII art atau pada lebar batang layar tidak pernah benar-benar seragam karena font tidak dapat memiliki lebar batang integral-pixel di semua ukuran . Ini penjelasan yang bagus dengan gambar.
Joey
1
mungkin yang paling tampan
Ronan Dejhero
1
Jonathan Van Matre, Terima kasih. Parameter pertama dapat dikurangi menjadi 99 tetapi saya tidak ingin mengurangi yang kedua, karena kualitas output. (Saya menyadari bahwa ini adalah tantangan kode-golf, tetapi saya memiliki harga diri.)
DavidC
25

Delphi 85 byte

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

Saya tahu, ini bukan solusi tercantik tetapi tidak ada aturan yang mengatakan Anda tidak bisa menggunakan sumber daya eksternal.
Hasil: Hasil

Teun Pronk
sumber
12
+1 untuk kreativitas menggunakan # sebagai latar belakang daripada latar depan.
gerrit
1
Anda dapat mendeklarasikan s sebagai TStringsgantinya. (Tapi tetap instantiasi dengan TStringList.)
manatwork
Apakah file yang Anda muat dari sesuatu yang benar-benar dikirimkan bersama Delphi, atau apakah Anda menulisnya sendiri? Jika yang terakhir, saya pikir Anda harus menghitung panjangnya sebagai bagian dari skor Anda.
Ilmari Karonen
@Ilmari, saya yakin Delphi tidak mengirim file dengan "ASCII art" Hello-World ":) Selain itu, dijelaskan dalam jawaban, bahwa ia menggunakan sumber daya eksternal.
TLama
3
@Tama: Saya berasumsi juga, saya hanya mencoba untuk mengucapkannya dengan sopan. Maksud saya adalah, bahkan jika sumber daya eksternal diizinkan, program ini masih akan gagal pada komputer siapa pun kecuali pembuatnya (dan, pada kenyataannya, kami tidak memiliki bukti bahwa itu bahkan berfungsi di komputernya). Juga, saya bisa mengalahkan skor dengan script Perl berikut: do X. Isi dari "sumber daya eksternal" Xdibiarkan tidak ditentukan (itu bekerja untuk saya, bukankah itu cukup?), Tetapi saya telah memberikan beberapa saran yang mungkin di bawah ini ...
Ilmari Karonen
15

Perl 5, 54 byte / 71 karakter ASCII yang dapat dicetak

Catatan: Ini adalah versi kedua dari jawaban ini. Untuk versi 64-byte / 95-char asli menggunakan PHP dan gzinflate (), lihat riwayat jawaban ini .

Berikut adalah versi ASCII 71-char yang dapat dicetak:

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

Versi 54 byte berisi karakter yang tidak dapat dicetak, jadi saya menyediakannya sebagai hex dump. Pada sistem Unixish, Anda dapat menggunakan xxd -runtuk mengembalikan hex dump menjadi skrip Perl yang dapat dieksekusi:

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

Keduanya harus dijalankan dengan perl -M5.010untuk mengaktifkan fitur Perl 5.10+ say. Mereka akan menghasilkan output berikut:

Cuplikan layar "Hello-World!"  Seni ASCII

(Ditunjukkan sebagai tangkapan layar, karena ketinggian garis besar pada SE membuat ASCII jelek dan sulit dibaca. Huruf kecil "e" agak canggung, tapi saya percaya ini memenuhi syarat sebagai dapat dibaca, jika hanya nyaris begitu.)


Ps. Jika output dari solusi di atas terasa terlalu minimalis untuk Anda, berikut adalah varian 92-karakter yang menghasilkan output yang mirip dengan solusi Tomas :

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

Berikut screenshotnya:

Cuplikan layar "Hello-World!"  Seni ASCII


Pps. Saya cukup yakin ini ( GolfScript, 51 karakter ) adalah solusi cetak-ASCII terpendek, jika Anda tidak menghitung yang hanya memanggil banner / FIGLet atau yang curang dengan cara lain:

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

Outputnya sama dengan solusi Perl 71-char saya di atas.

Ilmari Karonen
sumber
Saya katakan Anda baru saja melewati batas keterbacaan :-)
Tomas
1
Ini jauh lebih mudah dibaca di terminal saya daripada di sini di SE, karena jarak garis besar di sini.
Ilmari Karonen
Maksudku, itu tidak bisa dibaca. Btw saya dapat menghasilkan output Anda dalam 92 karakter , tanpa algoritma kompresi eksternal :-)
Tomas
@ Thomas: Anda benar, zip sepertinya bukan jawaban yang menang di sini. Saya akan memberi Anda +1 untuk itu jika saya belum melakukannya. BTW, saya bisa melakukannya dalam 71 karakter; Lihat di atas. :-)
Ilmari Karonen
1
Ilmari, Anda seharusnya tidak menantangku dengan unpack:-) Menemukan solusi 69 karakter (87 dengan hasil yang bagus dari saya).
Tomas
8

Shell + Figlet (35)

$ figlet -w 90 -f banner Hello-World!
#     #                                   #     #                             ### 
#     # ###### #      #       ####        #  #  #  ####  #####  #      #####  ### 
#     # #      #      #      #    #       #  #  # #    # #    # #      #    # ### 
####### #####  #      #      #    # ##### #  #  # #    # #    # #      #    #  #  
#     # #      #      #      #    #       #  #  # #    # #####  #      #    #     
#     # #      #      #      #    #       #  #  # #    # #   #  #      #    # ### 
#     # ###### ###### ######  ####         ## ##   ####  #    # ###### #####  ### 
suram
sumber
Jenis font apa ini? Itu hanya terlihat seperti karakter huruf kecil.
Cruncher
itu spanduk -f bannerIni adalah font pertama yang saya temukan yang menggunakan # alih-alih * atau | dan _.
muram
Mengubah "90" menjadi "9" menghasilkan dunia halo tinggi dan kurus, namun karena OP tidak peduli dengan kolom atau baris, itu harus diterima.
alexyorke
Kadang-kadang pemilih membuatku bingung. Kenapa ini mendapat skor bersih +8, tetapi jawaban figlet lainnya mendapat skor bersih -3?
Trauma Digital
8

Python 260 215 186 152

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

Python 196 183 130 114 (tetapi lebih jelek)

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

Saya menggunakan data zip dalam pengkodean base64. dan kodenya decode dari base64 encoding dan kemudian unzipping.

Elisa
sumber
Wow, itu benar-benar melonggarkan keterbacaan!
7

PHP - 183 byte

Menggunakan seni ASCII sebcap26 sebagai sumber ...

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

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

sumber
6

Brainfuck, 372 Byte

(Saya tahu. Tetapi hanya untuk kelengkapan, harus ada brainfuck ^^ Itu tidak akan menjadi lebih pendek, karena ada pengulangan kecil. Lini pertama dan kedua sudah ...)

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

Penerjemah di sini: http://koti.mbnet.fi/villes/php/bf.php


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

Menggabungkan penghasil angka @ ASKASK dan gambar dengan loop saya dan beberapa penyetelan tambahan, kita dapatkan:

Brainfuck, 343 339 336 334 Bytes

Terlihat lebih jelek dari versi asli saya.

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

(gambar lihat Jawaban ASKASK)

Johannes H.
sumber
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')

Keluaran:

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

Penjelasan:

Teks ASCII dipadatkan menjadi string di mana setiap bit mewakili piksel :

  • 0 untuk SPACE
  • 1 untuk #

Offset 33 diterapkan untuk mendapatkan hanya karakter yang dapat dicetak.

Florent
sumber
Tanda kurung fungsi lemak pertama dan returnpernyataan tidak diperlukan.
manatwork
@manatwork Saya mencoba untuk menghapusnya tetapi kemudian tidak lagi dikompilasi. Apa kamu yakin akan hal itu?
Florent
1
Firefox 27.0: i.stack.imgur.com/VyqnC.png
manatwork
@manatwork Terima kasih!
Florent
charCodeAt(0)dapat dikurangi menjadi charCodeAt().
Chiru
4

Sclipting , 38 karakter (76 bytes)

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

Keluaran:

# # ## #  #   #     #   #  #  ##  #  ##  #
# # #  #  #  # #    #   # # # # # #  # # #
### ## #  #  # # ## # # # # # ##  #  # # #
# # #  #  #  # #    # # # # # # # #  # #  
# # ## ## ##  #      # #   #  # # ## ##  #
Timwi
sumber
4
Halaman info kode-golf mengatakan "Jika Anda menggunakan Unicode, jumlah byte harus menggunakan UTF-8." Jika saya tidak salah, itu membuat panjang program Anda 114 byte . (76 byte yang Anda sebutkan akan untuk UTF-16 tanpa BOM.)
res
@res: Saya mengubahnya, karena tidak masuk akal untuk meminta itu. Penerjemah Sclipting saya memahami UTF-16 dengan baik, jadi ini adalah program yang valid yang dikodekan sebagai UTF-16.
Timwi
1
Timwi, hal penting
Tomas
3
@ user689 - sebenarnya "Hello-World!" dengan tanda seru di akhir ...
1
Saya kira "diterima oleh komunitas" berarti "diterima, tanpa diskusi komunitas , oleh sejumlah kecil orang dengan kekuatan untuk melakukannya."
res
3

Brainfuck, 362 byte

Maaf @ johannes-h, saya melihat milik Anda dan terinspirasi untuk membuatnya sendiri. Ini menggunakan kombinasi generasi nomor lebih cepat di awal dan gambar yang lebih sederhana untuk menghasilkan hasilnya dalam lebih sedikit byte. Namun ia tidak menggunakan loop di tempat lain sehingga itu untuk optimasi.

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

yang menghasilkan:

foto

ASKASK
sumber
Hm Berapa jauh lebih pendek dari generasi angka? Karena mengubah gambar tampak seperti menipu saya (setidaknya ketika langsung membandingkan solusi kami - tentu saja valid dalam kontes ini) ^^ Tapi saya akan melihat ke Anda nanti :) Anda dapat mengambil loop saya untuk yang pertama dua baris. Ini jauh lebih pendek (sekitar 10-20 byte jika saya ingat dengan benar)
Johannes H.
menurunkan versimu menjadi 343 Byte, lihat jawabanku
Johannes H.
dan bahkan lebih pendek, mengganti lebih banyak pengulangan dengan loop. 339 sekarang.
Johannes H.
Saya tidak punya reputasi baik untuk mengomentari Anda tetapi jika Anda melihat dekat pada versi baru Anda, Anda akan menemukan "> <" di sana yang dapat dihapus untuk mengambil dua byte :)
ASKASK
3

ImageMagick + sed, 71 byte

Saya tidak melihat entri ImageMagick lainnya, jadi inilah taruhan terakhir saya:

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

Saya pikir sedporsinya mungkin bisa golf lagi.

Cobalah online .

Keluaran:

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

Trauma Digital
sumber
2

Catatan tambahan, 154 133

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

yaitu

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

Satu-satunya sumber ASCII, inspirasi untuk seni ASCII adalah jawaban Johannes H. :-)

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

(lebih mudah dibaca di terminal)

Perl, 102

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

Output yang sama seperti di atas. Saya tahu saya kehilangan kedua jawaban Perl di atas, tetapi saya tetap menerbitkannya. Setidaknya saya mencoba dan bergerak ke arah yang benar (dan belum melihat jawaban terpendek) :-).

pengguna2846289
sumber
2

Pure Bash, tanpa utilitas eksternal - 133 karakter:

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

Gunakan shift kanan dan kiri (bagi dan gandakan dengan 2) dan xor untuk menemukan bit yang satu.

Data font yang dicuri dari Blender / Ilmari Karonen.

Diuji dalam Bash 3.2 dan 4.2

Omong-omong, ini hanya 166 karakter:

echo "# #  #  # #        #   #        #   # #
# # # # # #  #     # # #  #   # #  ## #
### #   # # # # ## # # # # # #  # # #  
# #  ## # #  #      # #   #  #  #  ## #"
Dijeda sampai pemberitahuan lebih lanjut.
sumber
1

Python 3, 114

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

Output ( e - W tinggi 4 karakter yang dicuri dari @Ilmari Karonen ):

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

Dan yang lebih pendek (107):

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

Keluaran:

# # ### #   #   ###   # # ### ##  #   ##   #
### ### #   #   # #   # # # # ### #   # #  #
# # ### ### ### ###   ### ### # # ### ##   #
Blender
sumber
Sebagian besar tidak dapat dibaca. Dunia Anda dari hasil kedua sebenarnya Uorld.
Silviu Burcea
@ SilviuBurcea: Ini terlihat lebih baik pada terminal emulator yang sebenarnya. Juga, "Dapat dibaca manusia" memberi Anda sedikit ruang gerak. Saya yakin Anda bisa menebak apa `" HALO ⊔ORLD! " cara.
Blender
Gunakan konstanta hex dan cukur beberapa karakter
Floris
@ Floris: Saya mencobanya. Awalan dua karakter membuatnya hanya sepanjang hingga sekitar 20 digit.
Blender
1

Python 154 Karakter, (Ukuran Char 5X7)

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

Keluaran

#   #      # #         #   #   #         #     # #
#   #      # #         #  # #  #         #     # #
#   #  ##  # #  ##      # # # #   ##  ## #   ### #
##### #  # # # #  #     # # # #  #  # #  #  #  # #
#   # #### # # #  # ##  # # # #  #  # #  #  #  # #
#   # #    # # #  #     # # # #  #  # #  #  #  #  
#   #  ### # #  ##       #   #    ##  #  #   ### #
Abhijit
sumber
1

Pesta:

(103 89 Bytes)

Kode:

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

Keluaran:

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

Lebih kecil, tetapi kurang mudah dibaca (Berdasarkan http://mckgyver.pbworks.com/f/1240440791/3PixelFont.jpg ):

Kode:

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

Keluaran:

 # # ### #  #  ###    #   # ### ##  #  ##  #
 ### ##  #  #  # # ## # # # # # ##  #  # # #
 # # ### ## ## ###     # #  ### # # ## ##  #
christofsteel
sumber
1

Javascript / ES6 (108 byte)

Salin ke konsol:

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

Keluaran:

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

(Membutuhkan browser yang kompatibel dengan ECMAScript6 mis. Firefox 22+)

Terinspirasi oleh @maximeeuziere, @ p01, @aemkei

Musterknabe
sumber
.join('\n')dapat direduksi ke .join(` `)tempat spasi adalah karakter baris baru yang sebenarnya.
Chiru
1

Penulis: xem, aemkei, p01, jonas

Jalankan ini di konsol JS.

JavaScript, lintas-browser, 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, berfungsi di Firefox, 108 byte

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

Hasil:

>
# #     # #       # #        #   # #
### ### # # ###   # # ### ## # ### #
# # ##  # # # # # ### # # #  # # #  
# # ### # # ###   # # ### #  # ### #
xem
sumber
@ p01 membuat versi lebih pendek (118 byte) di sini: twitter.com/p01/status/433230019419471872
aemkei
1

HTML, 209 karakter

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

Apakah ini masuk hitungan? :)

Florrie
sumber
1

Shell, 20 karakter:

banner Hello-world\!

Agar ini berfungsi, tentu saja Anda membutuhkan bannerprogram. Di Debian, Anda bisa mendapatkannya dengan menginstal bsdmainutilspaket.

Ini mencetak versi pesan Anda yang dibuat dengan indah, dirancang untuk dicetak pada salah satu printer umpan terus-menerus lama, sehingga output teks di atas adalah 322 panjang dengan lebar 123 kolom, dan Anda membalikkan cetakan di sisinya untuk membaca pesan. Anda bisa menggantungkan kertas yang dihasilkan di dinding sebagai spanduk, karena itu namanya.

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

EDIT: Sepertinya Debian juga memiliki sysvbannerpaket, yang memasang program banner yang mencetak teks secara horizontal untuk ditampilkan pada terminal. Namun, ini hanya mencetak 10 karakter pertama dari pesan, jadi agak menjengkelkan untuk masalah kode-golf ini!

steveha
sumber
1
Saya yakin Anda bermaksud menulis banner hello-world.
Floris
@ Floris, terima kasih atas bantuannya. Tetap.
steveha
1
Perhatikan bahwa spanduk muncul di Unix v7 pada tahun 1979 dan ditemukan di hampir setiap Unix.
sch
@sch, saya setuju bahwa bannertersedia untuk hampir setiap UNIX. Saya hanya meletakkan paket Debian sebagai bukti yang mudah bahwa saya tidak hanya mengada-ada, bagi orang-orang yang tidak mengetahuinya. Hari-hari ini saya tidak akan berharap untuk menemukan bannerdiinstal secara default pada UNIX, lebih dari yang saya harapkan untuk menemukan printer feed terus menerus di laboratorium komputer lagi. Tetapi setiap kode golf untuk membuat teks spanduk benar-benar harus memiliki bannerprogram di suatu tempat. Itu bagian dari sejarah budaya kita yang kaya sebagai ahli komputer. :-)
steveha
1

bash, 175 170 byte

Anda perlu membuang beberapa karakter untuk menghasilkan output yang cantik !

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

Keluaran:

#     #                                         #     #                                   ###
#     #  ######  #       #        ####          #  #  #   ####   #####   #       #####    ###
#     #  #       #       #       #    #         #  #  #  #    #  #    #  #       #    #   ###
#######  #####   #       #       #    #  #####  #  #  #  #    #  #    #  #       #    #    #
#     #  #       #       #       #    #         #  #  #  #    #  #####   #       #    #
#     #  #       #       #       #    #         #  #  #  #    #  #   #   #       #    #   ###
#     #  ######  ######  ######   ####           ## ##    ####   #    #  ######  #####    ###
devnull
sumber
Anda dapat membuatnya lebih kecil dengan lzma / unlzma
Emmanuel
0

F # - 204 karakter

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

Keluaran:

# #     # #        # #         #   # #
# #  #  # #  #     # #  #   ## #   # #
### # # # # # #    # # # # #   #  ## #
# # ### # # # # ## # # # # #   # # # #
# # #   # # # #    ### # # #   # # #  
# #  ## # #  #     # #  #  #   #  ## #
mattnewport
sumber
0

Python + pyfiglet - 87 karakter

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

Keluaran

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

Untuk menginstal pyfiglet, jalankan:

$ pip install pyfiglet
jfs
sumber
0

Python dengan pyfiglet: 66 menggunakan argv, 69 tanpa

66:

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

69:

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

pertama harus disebut sebagai, misalnya:

python asciiart.py 'Hello-World!'

kedua:

python asciiart.py

Keluaran:

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

(Yah, itu terlihat agak jelek dengan font ini. Meskipun demikian :))

[sunting] menghapus tanda hubung usang dari argumen.

Taku
sumber
Mengapa dasbor ekstra di depan output?
Ilmari Karonen
Kesalahan saya, itu adalah output dari yang menggunakan argv, di mana saya menggunakan tanda hubung sebelum argumen (soal kebiasaan, karena saya menggunakan bash sepanjang waktu). Saya akan mengeditnya, terima kasih.
Taku
0

Javascript 137 (134)

Menggunakan bit integer untuk merepresentasikan benda tajam dan spasi putih. Diuji dengan Firefox 27.

137 karakter

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 karakter (diputar 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)

"
#  ## ## # # ### #####  ### ## ## ## # #
  # #  # # # # # # # #  # #  #  #  # # #
# # #  #  ## # # # # #  # #  #  # ## ###
# # #  # # # # # # # #  # #  #  #  # # #
#  ##  # ### ### # # #  ###  #  # ## # #"
schwer
sumber
0

Python3 (126)

Ada ruang tambahan di antara karakter untuk membuatnya lebih mudah dibaca. Jadi secara teknis itu solusi 125 karakter.

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

Keluaran:

#   #   # #   #     #     # # #     #   #   #   # # #   # # #   #     # #     # 
#   #   #     #     #     #   #     #   #   #   #   #   #   #   #     #   #   # 
# # #   # #   #     #     #   #     #   #   #   #   #   # #     #     #   #   # 
#   #   #     #     #     #   #     #   #   #   #   #   #   #   #     #   #     
#   #   # #   # #   # #   # # #     # # # # #   # # #   #   #   # #   # #     #
schwer
sumber
0

Bash 37 , 33

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

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

Yang sama dengan:

echo "Hello-world" | toilet

Dari man toilet

TOIlet - menampilkan karakter penuh warna yang besar

Dengan tr "'\"m" "#"semua "karakter diganti dengan #.

fedorqui
sumber
trParameter akan lebih pendek dari yang dikutip. Maksudku, tr \'\"m \#bukannya tr "'\"m" "#".
manatwork
Oh bagus, saya tidak menyadarinya. Terima kasih @manatwork
fedorqui
Tunggu sebentar. The toiletOutput tidak kutip tunggal. Mengapa Anda memasukkannya ke dalam trparameter 1? Cukup tr \"m \#sudah.
manatwork
@manatwork Saya pikir saya perlu lebih banyak kopi :)
fedorqui
0

Smalltalk, 151

meskipun permainan golf ini sudah berakhir, untuk referensi:

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]

keluaran:

 ***  ***             ***       ***                                                         ***           **       
  *    *                *         *                                                           *            *       
  *    *                *         *                                                           *            *       
  *    *     ***        *         *        ***              ***   ***    ***     *** ***      *        *** *       
  ******    *   *       *         *       *   *              *     *    *   *      **   *     *       *   **       
  *    *   *     *      *         *      *     *             *  *  *   *     *     *          *      *     *       
  *    *   *******      *         *      *     *              * * *    *     *     *          *      *     *       
  *    *   *            *         *      *     *              * * *    *     *     *          *      *     *       
  *    *    *    *      *         *       *   *               ** **     *   *      *          *       *   **       
 ***  ***    ****    *******   *******     ***                *   *      ***     ******    *******     *** **      
blabla999
sumber
Anda hanya perlu menggunakan karakter '' (spasi) dan '#' (juga karakter baris baru).
Mukul Kumar
kesalahanku; output dari lari sebelumnya; kode sudah benar "{$ #. $} di: p + 1".
blabla999