ASCII sanatı “Merhaba-Dünya!” [Kapalı]


39

Amacınız "Merhaba Dünya!" Diye çıkaran en kısa programı yazmak. ASCII sanatı olarak.

Kurallar:

  • İnsan tarafından okunabilir olmalı, boyutu umrumda değil (sütun / satır)
  • Çıktı yalnızca boşluk (""), keskin uçlar ("#") ve yeni satırlar içermelidir
  • Çıktı monospaced bir fontla çalışması gerekir (ancak harflerin monospaced font kullanması gerekmez)
  • Sonuçta, her karakter birbirinden en az bir boşlukla ayrılmalıdır

Lütfen kodunuzdaki dili ve bayt sayısını içeren bir başlık ekleyin.


5
bash: 33 karakter - pastebin.com/HZ1w8z8g Bu kabul edilebilir mi?
Manatwork

4
Neden tire olsa? ...
Timwi

1
HQ9 + gibi önceden tanımlanmış bir şeyin kullanımını imkansız veya faşiz derecede zorlaştırdığımı varsayalım.
Manatwork

1
@PeterTaylor: Boşluklardan ve karma değerlerden oluşan çıktı, monospaced bir fontla çalışmalıdır, ancak karma değerlerin bolluğu ile temsil edilen harflerin hepsinin aynı genişliğe sahip olması gerekmez.
Timwi

Yanıtlar:


18

Bunu kesinlikle çok sevdim

Perl, 126 116 114 102 98   87 (69) karakter (yalnızca ascii ve harici yazı tipleri yok)

Herhangi bir harici yazı tipi kullanmayan en kısa ascii çözümü.

Pekala, zarif bir çözüm sunmak istedim ama @Ilmari Karonen bana meydan okudu unpack... bunu yapmamalıydı :-)

Peki, bu 92 88 69 karakter kodu @Ilmari Karonen'in aynısı olan çirkin okunamayan çıktıyı üretir:

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

Ambalajını açmadan daha şık bir model (88 karakter):

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

Ama bence böyle |. | E || .- |||., D! şey, Merhaba Dünyaya benzeyen bir şey değil! Gerçek çözüm buraya kadar kurutun ve izin verilmemelidir - açmak varyantı, 87 karakter :

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

Çıktı:

görüntü tanımını buraya girin

98 karakterde daha şık bir model:

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

Çıktı:

görüntü tanımını buraya girin

Daha eski çözüm (114 karakter), farklı kodlama türleri:

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

Çıktı:

görüntü tanımını buraya girin


Sonunda ünlemimi unuttum, yani Merhaba-Dünya! Ayrıca, küçük harf olmalıdır e, ancak beş piksel yüksekliğinde bir yazı tipi olarak okunabilmesi için büyük harf yaptığınızı biliyorum ...

47

JavaScript, 178 bayt

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'de çalışır.

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

Arial'i tanıyorum :-D
Timwi

4
Bu benim favorim. Çözüme ulaşmak için ilginç bir yöntem kullandınız. Olağanüstü!
Darth Egregious

2
Yaratıcı, az önce JavaScript için Figlet'i yarattığınıza inanıyorum;)
WallyWest

Dagnammit, bu benim de ilk düşüncemdi! İşte bunun yerine bir artı. :)
Jordan Gray

37

Mathematica 101 99 98

Bu, ifadeyi rasterleştirir, ikili görüntü verisini alır, her birini "#", her birini 0 "" (boş alan) 'a dönüştürür ve çıktıyı 12 x 130 karakterlik bir ızgarada görüntüler.

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

Merhaba

Jonathan Van Matre sayesinde bir karakter ekonomiye girdi.


1
Kalınlığı neden l'ler arasında değişir?
MrZander

İfadedeki rasterleştirmeyi tek bir resim olarak yaptım. Harf mektubu harf yapsaydım, l aynı olurdu. Ayrıca, rasterleştirme ızgara büyüklüğünü artırarak, çıktı yazdırılan karakterlerin kalitesine yaklaşma eğilimindedir. Ancak, daha büyük bir ızgara, yalnızca piksel olarak göründüğü noktaya kadar nispeten daha küçük "#" ile sonuçlanır. Sorun devam ediyor: neden bir resimdeki 2 l farklı ağırlık alıyor?
DavidC

3
@MrZander, fontların ipuçlarının nedeni budur: ASCII sanatında veya ekran gövde genişliğinde olduğu gibi fontları düşük çözünürlüklü bir piksel ızgarasına sığdırmaya çalışırken, fontun her boyutta bütünleşik piksel genişliğine sahip olamayacağı için hiçbir zaman tekdüzen değildir. . İşte resimlerle güzel bir açıklama.
Joey

1
Muhtemelen en iyi görünümlü
Ronan Dejhero

1
Jonathan Van Matre, Teşekkürler. İlk parametre 99'a düşürülebilir ancak çıktı kalitesi nedeniyle ikinciyi azaltmak istemem. (Bunun bir kod golfü mücadelesi olduğunun farkındayım, ama gururum var.)
DavidC

25

Delphi 85 bayt

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

Biliyorum, en güzel çözüm değil ama dış kaynakları kullanamayacağınız konusunda hiçbir kural yoktu.
Sonuç: Sonuç


12
Ön plan yerine # arka plan olarak kullanmanın yaratıcılığı için +1.
gerrit

1
Bunun TStringsyerine s olarak ilan edebilirsiniz . (Ancak örneklemeyle devam edin TStringList.)
manatwork

Yüklemekte olduğunuz dosya aslında Delphi ile birlikte gelen bir şeyden mi yoksa kendiniz mi yazdınız? İkincisi ise, uzunluğunu puanınızın bir parçası olarak saymanız gerekeceğini düşünüyorum.
Ilmari Karonen

@Ilmari, Delphi'nin "Merhaba-Dünya" ASCII sanatı olan bir dosyayla gönderilmediğinden eminim :) Ayrıca, cevabında dış kaynakları kullandığı açıklanmaktadır.
TLama

3
@TLama: Ben de öyle sanıyordum, kibarca ifade etmeye çalışıyordum. Demek istediğim, dış kaynaklara izin verilse bile , bu programın yazarının dışında kimsenin bilgisayarında hala başarısız olacağı (ve aslında onun bilgisayarında çalıştığına dair hiçbir kanıtımız olmadığı). Ayrıca, aşağıdaki Perl komut dosyası ile onun puanı yenebilir: do X. "Dış kaynak" ın içeriği Xbelirtilmemiş (benim için işe yarıyor, bu yeterli değil mi?), Ancak aşağıda birkaç olası öneride bulundum ...
Ilmari Karonen

15

Perl 5, 54 bayt / 71 yazdırılabilir ASCII karakter

Not: Bu, bu cevabın ikinci sürümüdür. PHP ve gzinflate () yöntemini kullanan orijinal 64 bayt / 95 karakter sürümü için bu cevabın geçmişine bakın .

İşte 71-char yazdırılabilir ASCII versiyonu:

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

54 bayt sürümü yazdırılamaz karakter içeriyor, bu yüzden onaltılık bir döküm olarak veriyorum. Unixish sistemlerde, xxd -raltıgen dökümü tekrar çalıştırılabilir bir Perl betiğine dönüştürmek için kullanabilirsiniz:

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.010Perl 5.10+ sayözelliğini etkinleştirmek için her ikisinin de çalıştırılması gerekir . Aşağıdaki çıktıyı üretecekler:

"Merhaba Dünya!" Nin ekran görüntüsü  ASCII sanatı

(Bir ekran görüntüsü olarak gösterilir, çünkü SE'deki büyük çizgi yüksekliği ASCII sanatını çirkin ve okumayı zorlaştırır. Küçük harf "e" biraz gariptir, ancak bunun ancak zor okunabilir nitelikte olduğuna inanıyorum.)


Ps. Yukarıdaki çözümün çıktısı sizin için çok minimalist hissediyorsa, işte Tomas'ın çözümüne benzer çıktılar üreten 92 karakterli bir değişken :

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

İşte bir ekran görüntüsü:

"Merhaba Dünya!" Nin ekran görüntüsü  ASCII sanatı


Pps. Ben eminim bu ( GolfScript, 51 karakter Eğer olanları saymazsak) en kısa yazdırılabilir ASCII çözüm olduğunu sadece çağrı afiş / FIGLet veya başka bir şekilde bu hile:

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

Çıktı yukarıdaki 71-charl Perl çözümüm ile aynı.


Okunabilirlik sınırını yeni aştığını söyleyebilirim :-)
Tomas

1
Terminalimde SE'den çok daha fazla okunabilir, çünkü buradaki geniş satır aralığı.
Ilmari Karonen

Yani, yine de okunamıyor. BTW Çıktınızı 92 karakterde üretebilirim, harici sıkıştırma algoritması olmadan :-)
Tomas

@ Toms: Haklısın, sıkma burada kazanan cevap gibi görünmüyor. Zaten olmasaydım bunun için sana +1 verirdim. BTW, 71 karakterde yapabilirim; yukarıyı görmek. :-)
Ilmari Karonen

1
Ilmari, unpack:-) bana meydan okumamalıydın :-) 69 karakterden oluşan bir çözüm buldum (87 güzel çıktıyla).
Tomas

8

Kabuk + Figlet (35)

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

Bu ne biçim bir yazı tipi? Bu sadece küçük büyük harf karakterleri gibi görünüyor.
Cruncher

Bu banner -f banner* kullandı # yerine kullanılan # buldum ilk yazı tipi oldu | ve _.
sert


"90" 'ı "9"' a değiştirmek, uzun ve sıska bir merhaba dünyası yaratır, ancak OP sütunlar veya satırlar umrunda olmadığı için kabul edilebilir olmalıdır.
alexyorke

Bazen seçmenler beni şaşırtıyor. Bu neden +8 net puan alıyor, ancak diğer cevaplar net -3 puan alıyor?
Dijital Travma

8

Python 260 215 186 152

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

Python 196 183 130 114 (ama çirkin)

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

Base64 kodlamasında sıkıştırılmış veri kullandım. ve kod, onu base64 kodlamasından kodlar ve ardından sıkıştırmasını açar.


Vay, bu gerçekten okunaklı bir gerginlik!

7

PHP - 183 bayt

Sebcap26'nın ASCII sanatını kaynak olarak kullanarak ...

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 Bayt

(Biliyorum. Fakat sadece bütünlük için, beyin fırtınası olmalı ^^

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

Burada tercüman: http://koti.mbnet.fi/villes/php/bf.php


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

@ ASKASK'ın sayı üreteci ve imajını döngülerimle ve bazı ek ayarlarla birleştirerek, şunları elde ederiz:

Brainfuck, 343 339 336 334 Bayt

Yine de orijinal sürümümden daha çirkin görünüyor.

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

(bkz. @ ASKASK'ın Cevabı)


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

Çıktı:

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

Açıklama:

ASCII metni, her bitin bir pikseli temsil ettiği bir dizgede sıkıştırılır :

  • 0 için SPACE
  • 1 için #

Yalnızca yazdırılabilir karakterleri almak için 33 ofseti uygulanır.


İlk şişman ok fonksiyonunun parantezleri ve returnifadeleri gerekli değildir.
Manatwork

@ manatwork Çıkarmaya çalıştım ama artık derlemedi. Bundan emin misin?
Florent


@ manatwork Teşekkürler!
Florent

charCodeAt(0)edilebilir düşük için charCodeAt().
Chiru

4

Sclipting , 38 karakter (76 bayt)

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

Çıktı:

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

4
Code-golf bilgi sayfasında "Unicode kullanıyorsanız, bayt sayısı UTF-8 kullanmalı" diyor. Yanılmıyorsam, program uzunluğu 114 bayt yapar . (Bahsettiğiniz 76 bayt, malzeme listesi olmadan UTF-16 için olacaktır.)
res

@res: Bunu değiştirdim, bunu gerektirmenin bir anlamı yok. Sclipting tercümanım UTF-16'yı gayet iyi anlıyor, bu yüzden UTF-16 olarak kodlanmış geçerli bir program.
Timwi

1
Timwi, dava önemli
Tomas

3
@ user689 - aslında "Merhaba Dünya!" sonunda bir ünlem işaretiyle ...

1
Sanırım "topluluk tarafından kabul", topluluk tartışma olmadan , bunu yapma yetkisi olan az sayıda insan tarafından kabul edilen "anlamına gelir ."
res

3

Brainfuck, 362 bayt

Üzgünüm @ johannes-h, ben seninkini gördüm ve kendimi yapmak için ilham aldım. Başlangıçta daha hızlı sayı üretme ve daha az bayt sonucu elde etmek için daha basit bir resim kombinasyonu kullanır. Bununla birlikte, döngüleri başka hiçbir yerde kullanmaz, bu yüzden optimizasyon için hazırdır.

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

hangi üretir:

pic


Hm. Sayı üretimi ne kadar kısa? Çünkü imajı değiştirmek beni aldatıyor gibi gözüküyor (en azından bizim çözümlerimizi doğrudan karşılaştırırken - elbette bu yarışmaya tamamen uygundu) ^^ BUt Ben sonradan seninle ilgileneceğim :) Ancak iki satır. Çok daha kısa (doğru hatırlıyorsam yaklaşık 10-20 bayt idi)
Johannes H.

sürümünüzü 343 Byte'a düşürdü, cevabımı görün
Johannes H.

ve hatta daha kısa, daha fazla tekrarı döngülerle değiştiriyoruz. 339 şimdi.
Johannes H.

Sizinkine yorum yapmak için neough itibarına sahip değilim ama yeni sürümünüze yakından bakarsanız, iki baytı almak için silinebilecek bir "> <" bulacaksınız :)
ASKASK

3

ImageMagick + sed, 71 bayt

Başka bir ImageMagick girişi göremiyorum, bu yüzden zemindeki geç hissim:

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

Sanırım sedporsiyon muhtemelen biraz daha golf oynayabilir.

Çevrimiçi deneyin .

Çıktı:

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


2

Postscript, 154 133

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

yani

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

ASCII-sadece kaynak, ASCII-sanat için ilham Johannes H.'nin cevabıydı :-)

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

(terminalde daha okunaklı)

Perl, 102

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

Yukarıdaki ile aynı çıktı. Her iki Perl cevabını kaybettiğimi biliyorum ama yine de yayınladım. En azından denedim ve doğru yönde hareket ediyordum (ve en kısa cevabı görmemiştim) :-).


2

Saf Bash, harici yardımcı program yok - 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

Bir bit bulmak için sağa ve sola kaydırma (bölme ve 2 ile çarpma) ve xor kullanır.

Yazı tipi verileri Blender / Ilmari Karonen'den çalındı.

Bash 3.2 ve 4.2'de test edilmiştir.

Bu arada, bu sadece 166 karakter:

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

1

Python 3, 114

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

Çıktı ( @Imari Karonen'den çalınan 4 karakter uzunluğunda e ve W ):

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

Ve daha kısa olanı (107):

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

Çıktı:

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

Çoğunlukla okunamıyor. 2. çıktıdan dünyanız aslında Uorld.
Silviu Burcea

@ SilviuBurcea: Gerçek bir terminal emülatöründe daha iyi görünüyor. Ayrıca, "İnsan tarafından okunabilir" size biraz kıpırdatıcı oda verir. Eminim "HELLO ⊔ORLD!" anlamına geliyor.
Blender

Onaltılık sabitleri kullanın ve birkaç karakterle tıraş edin
Floris

@ Floris: Bunu denedim. İki karakterli önek, yaklaşık 20 haneye kadar bekletir.
Blender

1

Python 154 Karakterler (Char 5X7 boyutunda)

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

Çıktı

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

1

Bash:

(103 89 Bayt)

Kod:

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

Çıktı:

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

Daha küçük, ancak daha az okunabilir ( http://mckgyver.pbworks.com/f/1240440791/3PixelFont.jpg temel alınmıştır ):

Kod:

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

Çıktı:

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

1

Javascript / ES6 (108 bayt)

Konsola kopyala:

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

Çıktı:

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

(ECMAScript6 uyumlu bir tarayıcıya ihtiyaç duyar, örn. Firefox 22+)

Inspired @maximeeuziere, @ p01, @aemkei


.join('\n')Alanın .join(` `)gerçek yeni bir çizgi karakteri olduğu yere düşürülebilir .
Chiru

1

Yazarlar: xem, aemkei, p01, jonas

Bunu JS konsolunda yürütün.

JavaScript, çapraz tarayıcı, 133 132 126 117 bayt

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

JavaScript, ES6, Firefox'ta çalışır, 108 bayt

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

Sonuç:

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

@
p01

1

HTML, 209 karakter

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

Bu sayılır mı? :)


1

Shell, 20 karakter:

banner Hello-world\!

Bunun çalışması için elbette bannerprograma ihtiyacınız var . Debian'da bsdmainutilspaketi kurarak alabilirsiniz .

Bu, eski sürekli beslemeli yazıcılardan birine basılmak üzere tasarlanmış, mesajınızın güzel bir şekilde oluşturulmuş bir versiyonunu basar, böylece yukarıdaki metnin çıktısı 322 satır uzunluğunda, 123 sütun genişliğindedir ve okumak için çıktısını çevirin mesaj. Elde edilen kağıdı duvara afiş olarak asabilirsiniz, dolayısıyla adı.

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

EDIT: Debian sysvbanner, bir terminalde görüntülemek üzere metni yatay olarak basan bir banner programı yükleyen pakete de benziyor . Ancak, bu mesajın sadece ilk 10 karakterini basar, bu yüzden bu kod-golf problemi için can sıkıcıdır!


1
Yazmak istediğine inanıyorum banner hello-world.
Floris

@ Floris, heads-up için teşekkürler. Sabit.
steveha

1
Afişin 1979'da Unix v7'de göründüğünü ve hemen hemen her Unix'te bulunduğunu unutmayın.
sch

@sch, bannerneredeyse her UNIX için mevcut olduğuna katılıyorum . Ben sadece Debian paketini, bilmediğim insanlar için bir şey yapmadığımın kanıtı olarak verdim. Bugünlerde bannerbir UNIX'te varsayılan olarak yüklü bulmayı beklemiyordum, artık bir bilgisayar laboratuvarında sürekli beslemeli bir yazıcı bulmayı umduğumdan daha fazla beklemiyorum. Ancak, afiş metni oluşturma konusundaki herhangi bir kod golf bannerprogramı gerçekten bir yerde bulundurmalıdır. Bilgisayar meraklıları olarak zengin kültürel tarihimizin bir parçası. :-)
steveha

1

bash, 175 170 bayt

Sen gerek atık bir üretmek için epeyce karakterleri oldukça çıkışı !

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

Çıktı:

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

Lzma / unlzma ile daha küçük hale getirebilirsiniz
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))

Çıktı:

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

0

Python + pyfiglet - 87 karakter

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

Çıktı

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

Yüklemek için pyfigletçalıştırın:

$ pip install pyfiglet

0

Pyfiglet ile Python: 66 kullanarak 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'))

firs, örneğin:

python asciiart.py 'Merhaba Dünya!'

ikinci:

python asciiart.py.

Çıktı:

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

(Eh, bu yazı tipi ile biraz berbat görünüyor. Yine de :))

[edit] argüman eski çizgi kaldırıldı.


Çıktının önündeki ekstra çizgi neden?
Ilmari Karonen

Benim hatam, argüman kullanan bir çıktının çıktısı, burada argümandan önce bir çizgi kullandım (her zaman bash kullandığım gibi alışkanlık meselesi). Düzenleyeceğim, teşekkür ederim.
Taku

0

Javascript 137 (134)

Keskinleri beyaz alanları temsil etmek için tamsayıların bitlerini kullanır. Firefox 27 ile test edilmiştir.

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 (180 ° döndürülmüş)

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)

Karakterler arasında daha iyi okunabilmesi için ek bir boşluk var. Bu yüzden teknik olarak 125 karakterlik bir çözüm.

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

Çıktı:

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

0

Bash 37 , 33

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

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

Aynı olan:

echo "Hello-world" | toilet

itibaren man toilet

TOIlet - büyük renkli karakter görüntüler

İle tr "'\"m" "#"tüm "karakter ile değiştirilir #.


tr'ın parametreleri alıntıdan daha kısa olacaktır. Bunun tr \'\"m \#yerine demek istiyorum tr "'\"m" "#".
Manatwork

Aferin, bunun farkında değildim. Thanks @manatwork
fedorqui 12:14

Bir saniye bekle. toiletÇıkış tek alıntı vardı. Neden onu trilk parametreye dahil ettiniz ? Sadece tr \"m \#yeter.
Manatwork

@manatwork Daha fazla kahveye ihtiyacım var :)
fedorqui

0

Küçük konuşma, 151

Bu golf oyunu zaten bitmiş olmasına rağmen, referans için:

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]

çıktı:

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

Sadece '' (boşluklar) ve '#' karakterleri (ayrıca yeni satır karakterleri) kullanmanız gerekir.
Mukul Kumar

benim hatam; çıktı önceki çalışmadandı; kod doğru "{$ #. $} 'da: p + 1".
blabla999
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.