Arte ASCII “Hello-World!” [Fechado]


39

Seu objetivo é escrever o programa mais curto que produz "Hello-World!" conforme art. ASCII.

Regras :

  • Deve ser legível por humanos, não me importo com o tamanho (colunas / linhas)
  • A saída deve conter apenas espaços (""), objectos cortantes ("#") e novas linhas
  • A saída deve funcionar com uma fonte monoespaçada (mas as letras não precisam usar uma fonte monoespaçada)
  • No resultado, cada caractere deve ser separado um do outro por pelo menos um espaço

Por favor, adicione um título com o idioma e o número de bytes no seu código.


5
bash: 33 caracteres - pastebin.com/HZ1w8z8g Isso é aceitável?
Manatwork

4
Por que o hífen embora ...?
Timwi

1
Suponho que seja impossível ou difícil o uso de algo predefinido como o HQ9 +.
Manatwork

1
@ PeterTaylor: A saída que consiste em espaços e hashes deve funcionar com uma fonte monoespaçada, mas as letras representadas pela infinidade de hashes não precisam ter a mesma largura.
Timwi

Respostas:


18

Eu absolutamente gostei deste

Perl, 126 116 114 102 98   87 (69) caracteres (apenas ascii e sem fontes externas)

A partir de agora a solução ASCII mais curta, que não usa fontes externas.

Bem, eu queria apresentar uma solução elegante, mas @Ilmari Karonen me desafiou com unpack... não deveria ter feito isso :-)

Bem, esse código 92 88 69 chars gera uma saída ilegível idêntica à do @Ilmari Karonen:

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

Variante mais elegante sem descompactar (88 caracteres):

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

Mas acho que | | | e || .- |||., D! coisa não é nada parecido com o Hello-World! e não deve ser permitido, então a solução real está aqui - descompacte a variante, 87 caracteres :

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

Saída:

insira a descrição da imagem aqui

Variante mais elegante a 98 caracteres:

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

Saída:

insira a descrição da imagem aqui

Solução mais antiga (114 caracteres), tipo diferente de codificação:

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

Saída:

insira a descrição da imagem aqui


Esqueceu a exclamação no final, ou seja, Hello-World! Além disso, deve estar em letras minúsculas e, mas eu sei que você fez maiúsculas para tornar legível como uma alta fonte de cinco pixéis ...

47

JavaScript, 178 bytes

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

Isso funciona no Firefox 27 Scratchpad.

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

Eu reconheço Arial :-D
Timwi

4
Este é meu favorito. Você usou um método interessante para chegar à solução. Maravilhoso!
Darth Egregious

2
Engenhoso, acredito que você acabou de criar o Figlet para JavaScript;)
WallyWest 6/14

Dagnammit, este foi o meu primeiro pensamento também! Aqui está um voto positivo. :)
Jordan Gray

37

Mathematica 101 99 98

Isso rasteriza a expressão, obtém os dados da imagem binária, converte cada 1 em "#", cada 0 em "" (espaço vazio) e exibe a saída em uma grade de 12 por 130 caracteres.

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

Olá

Um personagem economizou graças a Jonathan Van Matre.


1
Por que a espessura varia entre os l's?
MrZander

Fiz a rasterização da expressão como uma única imagem. Se eu tivesse feito letra por letra, os l's seriam idênticos. Além disso, aumentando o tamanho da grade de rasterização, a saída tende a se aproximar da qualidade dos caracteres impressos. Mas uma grade maior resulta em "#" relativamente menor, a ponto de parecer meros pixels. A pergunta permanece: por que 2 l em uma imagem recebem pesos diferentes?
DavidC

3
@MrZander, essa é a razão pela qual as fontes têm dicas: ao tentar encaixar fontes em uma grade de pixels de baixa resolução, como na arte ASCII ou na largura da haste da tela, nunca é realmente uniforme porque a fonte não pode ter hastes de pixel inteiro em todos os tamanhos . Aqui está uma boa explicação com fotos.
Joey

1
prbably o mais bonito
Ronan Dejhero

1
Jonathan Van Matre, Obrigado. O primeiro parâmetro pode ser reduzido para 99, mas eu não gostaria de reduzir o segundo, devido à qualidade da saída. (Percebo que esse é um desafio para o código-golfe, mas tenho meu orgulho.) #
187

25

Delphi 85 bytes

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

Eu sei, não é a solução mais bonita, mas não havia uma regra que dizia que você não podia usar recursos externos.
Resultado: Resultado


12
+1 pela criatividade de usar # como plano de fundo em vez de primeiro plano.
7118 Gerrit

1
Você pode declarar s como TStringsalternativa. (Mas tenha a instanciação com TStringList.)
manatwork

O arquivo que você está carregando de algo que realmente acompanha o Delphi ou você mesmo o escreveu? Nesse último caso, acho que você precisará contar o comprimento como parte da sua pontuação.
Ilmari Karonen

@Ilmari, tenho certeza que o Delphi não é enviado com um arquivo com a arte ASCII "Hello-World" :) Além disso, está descrito na resposta que ele usa recursos externos.
TLama

3
@Tama: Eu assumi que também estava apenas tentando expressá-lo educadamente. Meu argumento é que, mesmo que recursos externos fossem permitidos, esse programa ainda falharia no computador de qualquer pessoa, exceto no de seu autor (e, de fato, não temos provas de que ele funcione no computador). Além disso, eu posso bater sua pontuação com o seguinte script Perl: do X. O conteúdo do "recurso externo" Xé deixado indeterminado (ele trabalha para mim, não é o suficiente?), Mas eu tenho desde um par de possíveis sugestões abaixo ...
Ilmari Karonen

15

Perl 5, 54 bytes / 71 caracteres ASCII imprimíveis

Nota: Esta é a segunda versão desta resposta. Para a versão original de 64 bytes / 95 caracteres usando PHP e gzinflate (), consulte o histórico desta resposta .

Aqui está a versão ASCII imprimível de 71 caracteres:

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

A versão de 54 bytes contém caracteres não imprimíveis, por isso estou fornecendo-a como um dump hexadecimal. Em sistemas Unixish, você pode usar xxd -rpara transformar o hex dump novamente em um script Perl executável:

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

Ambos precisam ser executados perl -M5.010para ativar o sayrecurso Perl 5.10+ . Eles produzirão a seguinte saída:

Captura de tela de "Hello-World!"  Arte ASCII

(Mostrado como uma captura de tela, porque a enorme altura da linha no SE torna a arte ASCII feia e difícil de ler. A letra minúscula "e" é meio estranha, mas acredito que isso se qualifica como legível, mesmo que apenas um pouco.)


Ps. Se a saída da solução acima parecer muito minimalista para você, aqui está uma variante de 92 caracteres que produz uma saída semelhante à solução de Tomas :

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

Aqui está uma captura de tela:

Captura de tela de "Hello-World!"  Arte ASCII


Pps. Tenho certeza de que essa ( GolfScript, 51 caracteres ) é a menor solução ASCII imprimível, se você não contar as que chamam de banner / FIGLet ou que trapaceiam de alguma outra maneira:

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

A saída é a mesma da minha solução Perl de 71 caracteres acima.


Eu diria que você acabou de cruzar a fronteira da legibilidade :-)
Tomas

1
É consideravelmente mais legível no meu terminal do que aqui no SE, por causa do enorme espaçamento entre linhas aqui.
Ilmari Karonen

Quero dizer, é ilegível de qualquer maneira. BTW eu posso produzir sua saída em 92 caracteres , sem algoritmo de compactação externo :-)
Tomas

@ Tomas: Você está certo, o zíper não parece ser a resposta vencedora aqui. Eu daria a você um +1 por isso, se ainda não o tivesse feito. BTW, eu posso fazer isso em 71 caracteres; Veja acima. :-)
Ilmari Karonen

1
Ilmari, você não deveria ter me desafiado com unpack:-) Encontrei uma solução de 69 caracteres (87 com a boa saída minha).
Tomas

8

Concha + Figlet (35)

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

Que tipo de fonte é essa? Aqueles parecem caracteres maiúsculos menores.
Cruncher

banner -f bannerFoi a primeira fonte que encontrei que usou # em vez de * ou | e _.
desagradável


Alterar "90" para "9" gera um olá alto e magro, no entanto, como o OP não se importa com colunas ou linhas, deve ser aceitável.
Alexyorke

Às vezes os eleitores me confundem. Como isso obtém uma pontuação líquida de +8, mas a outra resposta do figlet obtém uma pontuação líquida de -3?
Digital Trauma

8

Python 260 215 186 152

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

Python 196 183 130 114 (mas mais feia)

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

Eu usei dados compactados na codificação base64. e o código decodifica-o da codificação base64 e descompacta-o.


Uau, isso realmente aumenta a legibilidade!

7

PHP - 183 bytes

Usando a arte ASCII de sebcap26 como fonte ...

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

(Eu sei. Mas, só para completar, tem que haver um golpe cerebral ^^ Não vai ficar muito mais curto, pois há poucas repetições. O loop de primeira e segunda linha já ...)

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

Intérprete aqui: http://koti.mbnet.fi/villes/php/bf.php


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

Combinando o gerador de números e a imagem do @ ASKASK com meus loops e alguns ajustes adicionais, obtemos:

Brainfuck, 343 339 336 334 Bytes

Parece mais feio do que minha versão original.

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

(imagem veja a resposta da @ 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')

Saída:

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

Explicação:

O texto ASCII é compactado em uma sequência em que cada bit representa um pixel :

  • 0 para SPACE
  • 1 para #

Um deslocamento de 33 é aplicado para obter apenas caracteres imprimíveis.


Os colchetes e a returndeclaração da primeira função de seta gorda não são necessários.
manatwork

@manatwork Tentei removê-lo, mas ele não estava mais compilando. Você tem certeza sobre isso?
Florent


@manatwork Thanks!
Florent

charCodeAt(0)pode ser reduzido para charCodeAt().
Chiru

4

Sclipting , 38 caracteres (76 bytes)

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

Saída:

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

4
A página de informações do code-golf diz "Se você usa Unicode, a contagem de bytes deve usar UTF-8". Se não me engano, isso gera 114 bytes de comprimento de programa . (A 76 bytes você menciona seria para UTF-16 sem uma BOM.)
res

@res: eu mudei isso, pois não faz sentido exigir isso. Meu intérprete de Sclipting entende bem o UTF-16, portanto é um programa válido codificado como UTF-16.
Timwi

1
Timwi, caso importante
Tomas

3
@ user689 - na verdade, "Olá, mundo!" com um ponto de exclamação no final ...

1
Suponho que "aceito pela comunidade" significa "aceito, sem discussão da comunidade , por um pequeno número de pessoas com o poder de fazê-lo".
res

3

Brainfuck, 362 bytes

Desculpe @ johannes-h, eu vi o seu e fui inspirado a fazer o meu. Ele usa uma combinação de geração de números mais rápida no início e uma imagem mais simples para gerar o resultado em menos bytes. No entanto, ele não usa loops em nenhum outro lugar, portanto, é para otimização.

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

que gera:

foto


Hum. Quanto menor a geração de números? porque mudar a imagem parece trapaça para mim (pelo menos ao comparar diretamente nossas soluções - é perfeitamente válido neste concurso, é claro) ^^ Mas vou ver a sua mais tarde :) Você pode dar o meu loop pela primeira vez duas linhas no entanto. É muito mais curto (era cerca de 10-20 bytes se bem me lembro)
Johannes H.

baixei a sua versão para 343 bytes, veja a minha resposta
Johannes H.

e ainda mais curto, substituindo mais repetições por loops. 339 agora.
Johannes H.

Eu não tenho reputação neough a comentar sobre o seu, mas se você olhar atentamente para a sua nova versão você vai encontrar um "> <" lá dentro que podem ser excluídos para tirar dois bytes :)
ASKASK

3

ImageMagick + sed, 71 bytes

Não vejo nenhuma outra entrada do ImageMagick, então aqui está minha aposta tardia:

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

Eu acho que a sedparte provavelmente pode ser jogada um pouco mais.

Experimente online .

Saída:

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


2

Postscript, 154 133

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

ie

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

Fonte apenas ASCII, inspiração para a arte ASCII foi a resposta de Johannes H. :-)

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

(mais legível no terminal)

Perl, 102

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

Mesma saída que acima. Sei que perdi para as duas respostas Perl acima, mas a publico de qualquer maneira. Pelo menos eu tentei e estava indo na direção certa (e não tinha visto a resposta mais curta) :-).


2

Pure Bash, sem utilitários externos - 133 caracteres:

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

Usa shift direito e esquerdo (divida e multiplique por 2) e xor para encontrar os bits um.

Dados da fonte roubados do Blender / Ilmari Karonen.

Testado no Bash 3.2 e 4.2

A propósito, isso tem apenas 166 caracteres:

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

1

Python 3, 114

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

Saída (4 caracteres de altura e e W roubados de @Ilmari Karonen ):

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

E uma mais curta (107):

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

Saída:

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

É principalmente ilegível. Seu mundo da 2ª saída é na verdade Uorld.
Silviu Burcea

@ SilviuBurcea: Parece melhor em um emulador de terminal real. Além disso, "legível por humanos" oferece um pouco de espaço de manobra. Tenho certeza que você pode adivinhar o que "" OLÁ! significa.
Blender

Use constantes hexadecimais e raspar alguns personagens off
Floris

@Floris: Eu tentei isso. O prefixo de dois caracteres os torna tão longos até cerca de 20 dígitos.
Blender

1

Python 154 caracteres, (tamanho 5X7)

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

Saída

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

1

Bater:

(103 89 bytes)

Código:

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

Saída:

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

Menor, mas menos legível (com base em http://mckgyver.pbworks.com/f/1240440791/3PixelFont.jpg ):

Código:

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

Saída:

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

1

Javascript / ES6 (108 bytes)

Copie para o console:

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

Saída:

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

(Precisa de um navegador compatível com ECMAScript6, ou seja, Firefox 22+)

Inspirado por @maximeeuziere, @ p01, @aemkei


.join('\n')pode ser reduzido para .join(` `)onde o espaço é um caractere de nova linha real.
Chiru

1

Autores: xem, aemkei, p01, jonas

Execute isso no console JS.

JavaScript, navegador cruzado, 133 132 126 117 bytes

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

JavaScript, ES6, funciona no Firefox, 108 bytes

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

Resultado:

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

O @ p01 criou uma versão mais curta (118 bytes) aqui: twitter.com/p01/status/433230019419471872 #
aemkei

1

HTML, 209 caracteres

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

Isso conta? :)


1

Shell, 20 caracteres:

banner Hello-world\!

Para que isso funcione, é claro que você precisa do bannerprograma. No Debian, você pode obtê-lo instalando o bsdmainutilspacote.

Isso imprime uma versão lindamente renderizada da sua mensagem, projetada para ser impressa em uma das antigas impressoras de alimentação contínua, para que a saída do texto acima tenha 322 linhas de comprimento por 123 colunas de largura e você vire a impressão de lado para ler a mensagem. Você pode pendurar o papel resultante na parede como um banner, daí o nome.

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

EDIT: Parece que o Debian também possui o sysvbannerpacote, que instala um programa de banner que imprime o texto horizontalmente para exibição em um terminal. No entanto, isso só imprime os 10 primeiros caracteres da mensagem, portanto é meio irritante para esse problema de código-golfe!


1
Eu acredito que você quis escrever banner hello-world.
Floris

@Floris, obrigado pelo aviso. Fixo.
steveha

1
Observe que o banner apareceu no Unix v7 em 1979 e é encontrado em praticamente todos os Unix.
SCH

@sch, eu concordo que banneresteja disponível para praticamente todos os UNIX. Acabei de colocar o pacote Debian como uma prova conveniente de que não estava inventando algo para pessoas que não sabiam disso. Atualmente, eu não esperava encontrar bannerinstalado por padrão em um UNIX, assim como não esperava mais encontrar uma impressora de alimentação contínua em um laboratório de informática. Mas qualquer código de golfe para criar texto de faixa realmente deve ter o bannerprograma em algum lugar. Faz parte de nossa rica história cultural como viciados em computadores. :-)
steveha

1

bash, 175 170 bytes

Você precisa desperdiçar alguns caracteres para produzir uma saída bonita !

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

Saída:

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

Você pode torná-lo menor com lzma / unlzma
Emmanuel

0

F # - 204 caracteres

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

Saída:

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

0

Python + pyfiglet - 87 caracteres

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

Saída

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

Para instalar pyfiglet, execute:

$ pip install pyfiglet

0

Python com pyfiglet: 66 usando argv, 69 sem

66:

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

69:

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

Os primeiros devem ser chamados como, por exemplo:

python asciiart.py 'Olá, mundo!'

segundo:

python asciiart.py.

Saída:

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

(Bem, parece meio ruim com essa fonte. No entanto :))

[edit] removeu o traço obsoleto do argumento.


Por que o traço extra na frente da saída?
Ilmari Karonen

Meu erro, é a saída da que usa argv, onde usei um traço antes do argumento (questão de hábito, como uso bash o tempo todo). Vou editá-lo, obrigado.
Taku 07/02

0

Javascript 137 (134)

Usa os bits de números inteiros para representar nítidos espaços em branco. Testado com o Firefox 27.

137 caracteres

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 caracteres (girado 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)

Há um espaço adicional entre os caracteres para torná-lo melhor legível. Então, tecnicamente, é uma solução de 125 caracteres.

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

Saída:

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

0

Bash 37 , 33

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

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

Qual é o mesmo que:

echo "Hello-world" | toilet

A partir de man toilet

TOIlet - exibe caracteres coloridos grandes

Com tr "'\"m" "#"todos os "caracteres são substituídos por #.


trOs parâmetros de escape seriam mais curtos que os citados. Quero dizer, em tr \'\"m \#vez de tr "'\"m" "#".
manatwork

Oh, bom, eu não estava ciente disso. Obrigado @manatwork
fedorqui

Espere um segundo. A toiletsaída não tinha aspas simples. Por que você o incluiu no tr1º parâmetro? Apenas tr \"m \#é suficiente.
manatwork

@manatwork Acho que preciso de mais café :)
fedorqui

0

Smalltalk, 151

embora este jogo de golfe já tenha terminado, para referência:

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]

saída:

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

Você precisa usar apenas caracteres '' (espaços) e '#' (também caracteres de nova linha).
Mukul Kumar

meu erro; a saída era de uma execução anterior; o código está correto "{$ #. $} em: p + 1".
blabla999
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.