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.
code-golf
ascii-art
hello-world
sebcap26
fonte
fonte
bash
: 33 caracteres - pastebin.com/HZ1w8z8g Isso é aceitável?Respostas:
Eu absolutamente gostei deste
Perl,
126 116 114 102 9887 (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 8869 chars gera uma saída ilegível idêntica à do @Ilmari Karonen:Variante mais elegante sem descompactar (88 caracteres):
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 :
Saída:
Variante mais elegante a 98 caracteres:
Saída:
Solução mais antiga (114 caracteres), tipo diferente de codificação:
Saída:
fonte
e
, mas eu sei que você fez maiúsculas para tornar legível como uma alta fonte de cinco pixéis ...JavaScript, 178 bytes
Isso funciona no Firefox 27 Scratchpad.
fonte
Mathematica
101 9998Isso 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.
Um personagem economizou graças a Jonathan Van Matre.
fonte
Delphi 85 bytes
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:
fonte
TStrings
alternativa. (Mas tenha a instanciação comTStringList
.)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 ...Perl 5, 54 bytes / 71 caracteres ASCII imprimíveis
Aqui está a versão ASCII imprimível de 71 caracteres:
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 -r
para transformar o hex dump novamente em um script Perl executável:Ambos precisam ser executados
perl -M5.010
para ativar osay
recurso Perl 5.10+ . Eles produzirão a seguinte saída:(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 :
Aqui está uma captura de tela:
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:
A saída é a mesma da minha solução Perl de 71 caracteres acima.
fonte
unpack
:-) Encontrei uma solução de 69 caracteres (87 com a boa saída minha).Concha + Figlet (35)
fonte
-f banner
Foi a primeira fonte que encontrei que usou # em vez de * ou | e _.Python
260 215 186152Python
196 183 130114 (mas mais feia)Eu usei dados compactados na codificação base64. e o código decodifica-o da codificação base64 e descompacta-o.
fonte
PHP - 183 bytes
Usando a arte ASCII de sebcap26 como fonte ...
fonte
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 336334 BytesParece mais feio do que minha versão original.
(imagem veja a resposta da @ ASKASK)
fonte
EcmaScript 6,
172161Saída:
Explicação:
fonte
return
declaração da primeira função de seta gorda não são necessários.charCodeAt(0)
pode ser reduzido paracharCodeAt()
.Sclipting , 38 caracteres (76 bytes)
Saída:
fonte
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:
fonte
ImageMagick + sed, 71 bytes
Não vejo nenhuma outra entrada do ImageMagick, então aqui está minha aposta tardia:
Eu acho que a
sed
parte provavelmente pode ser jogada um pouco mais.Experimente online .
Saída:
fonte
Postscript,
154133ie
Fonte apenas ASCII, inspiração para a arte ASCII foi a resposta de Johannes H. :-)
(mais legível no terminal)
Perl, 102
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) :-).
fonte
Pure Bash, sem utilitários externos - 133 caracteres:
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:
fonte
Python 3, 114
Saída (4 caracteres de altura e e W roubados de @Ilmari Karonen ):
E uma mais curta (107):
Saída:
fonte
Python 154 caracteres, (tamanho 5X7)
Saída
fonte
Bater:
(
10389 bytes)Código:
Saída:
Menor, mas menos legível (com base em http://mckgyver.pbworks.com/f/1240440791/3PixelFont.jpg ):
Código:
Saída:
fonte
Javascript / ES6 (108 bytes)
Copie para o console:
Saída:
(Precisa de um navegador compatível com ECMAScript6, ou seja, Firefox 22+)
Inspirado por @maximeeuziere, @ p01, @aemkei
fonte
.join('\n')
pode ser reduzido para.join(` `)
onde o espaço é um caractere de nova linha real.Autores: xem, aemkei, p01, jonas
Execute isso no console JS.
JavaScript, navegador cruzado,
133132126117 bytesJavaScript, ES6, funciona no Firefox, 108 bytes
Resultado:
fonte
HTML, 209 caracteres
Isso conta? :)
fonte
Shell, 20 caracteres:
Para que isso funcione, é claro que você precisa do
banner
programa. No Debian, você pode obtê-lo instalando obsdmainutils
pacote.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
sysvbanner
pacote, 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!fonte
banner hello-world
.banner
esteja 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 encontrarbanner
instalado 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 obanner
programa em algum lugar. Faz parte de nossa rica história cultural como viciados em computadores. :-)bash,
175170 bytesVocê precisa desperdiçar alguns caracteres para produzir uma saída bonita !
Saída:
fonte
F # - 204 caracteres
Saída:
fonte
Python + pyfiglet - 87 caracteres
Saída
Para instalar
pyfiglet
, execute:fonte
Python com pyfiglet: 66 usando argv, 69 sem
66:
69:
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.
fonte
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
134 caracteres (girado 180 °)
fonte
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.
Saída:
fonte
Bash
37, 33Qual é o mesmo que:
A partir de
man toilet
Com
tr "'\"m" "#"
todos os"
caracteres são substituídos por#
.fonte
tr
Os parâmetros de escape seriam mais curtos que os citados. Quero dizer, emtr \'\"m \#
vez detr "'\"m" "#"
.toilet
saída não tinha aspas simples. Por que você o incluiu notr
1º parâmetro? Apenastr \"m \#
é suficiente.Smalltalk, 151
embora este jogo de golfe já tenha terminado, para referência:
saída:
fonte