Arte ASCII "¡Hola Mundo!" [Cerrado]


39

Su objetivo es escribir el programa más corto que produzca "Hello-World!" como ASCII art.

Reglas :

  • Debe ser legible por humanos, no me importa su tamaño (cols / filas)
  • La salida debe contener solo espacios (""), objetos punzantes ("#") y líneas nuevas
  • La salida debe funcionar con una fuente monoespaciada (pero las letras no necesariamente usan una fuente monoespaciada)
  • En el resultado, cada personaje debe estar separado entre sí por al menos un espacio

Agregue un título con el idioma y la cantidad de bytes en su código.


55
bash: 33 caracteres - pastebin.com/HZ1w8z8g ¿Es esto aceptable?
manatwork

44
¿Por qué el guión sin embargo? ...
Timwi

1
Supongo que hace imposible o inviable el uso de algo predefinido como HQ9 +.
manatwork

1
@PeterTaylor: la salida que consta de espacios y hashes debe funcionar con una fuente monoespaciada, pero las letras representadas por la gran cantidad de hashes no necesitan tener el mismo ancho.
Timwi

1
Relacionado, pero diferente: Di "Hola" al mundo en el arte ASCII
Ilmari Karonen

Respuestas:


18

Disfruté absolutamente este

Perl, 126116114102108   87 (69) caracteres (solo ascii y sin fuentes externas)

A partir de ahora la solución ascii más corta que no utiliza ninguna fuente externa

Bueno, quería presentar una solución elegante, pero @Ilmari Karonen me desafió con unpack... no debería haber hecho eso :-)

Bueno, este código de caracteres 88 88 69 genera la salida ilegible uglish idéntica a la de @Ilmari Karonen:

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

Variante más elegante sin desempaquetar (88 caracteres):

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

Pero creo que tal |. | E || .- |||., D! ¡No hay nada que se parezca a Hello-World! y no debería permitirse, así que la solución real va aquí: variante de desempaquetado, 87 caracteres :

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

Salida:

ingrese la descripción de la imagen aquí

Variante más elegante en 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

Salida:

ingrese la descripción de la imagen aquí

Solución anterior (114 caracteres), diferentes tipos de codificación:

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

Salida:

ingrese la descripción de la imagen aquí


Olvidé la exclamación al final, es decir, ¡Hola Mundo! Además, debe ser minúscula e, pero sé que lo hizo mayúsculas para que sea legible como una alta fuente de cinco pixeles ...

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

Eso funciona en Firefox 27 Scratchpad.

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

Reconozco a Arial :-D
Timwi

44
Esta es mi favorita. Has utilizado un método interesante para llegar a la solución. ¡Maravilloso!
Darth Egregious

2
Ingenioso, creo que acabas de crear Figlet para JavaScript;)
WallyWest

Dagnammit, ¡este fue mi primer pensamiento también! Aquí hay un voto a favor en su lugar. :)
Jordan Gray

37

Mathematica 101 99 98

Esto rasteriza la expresión, obtiene los datos de la imagen binaria, convierte cada 1 en "#", cada 0 en "" (espacio vacío) y muestra la salida en una cuadrícula de 12 por 130 caracteres.

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

Hola

Un personaje economizó gracias a Jonathan Van Matre.


1
¿Por qué el grosor varía entre los l?
MrZander

Hice la rasterización en la expresión como una sola imagen. Si lo hubiera hecho letra por letra, la letra habría sido idéntica. Además, al aumentar el tamaño de la cuadrícula de rasterización, la salida tiende a acercarse a la calidad de los caracteres impresos. Pero una cuadrícula más grande da como resultado un "#" relativamente más pequeño, hasta el punto de que parecen ser meros píxeles. La pregunta sigue siendo: ¿por qué 2 l en una imagen reciben pesos diferentes?
DavidC

3
@MrZander, esa es la razón por la que las fuentes tienen pistas: cuando se intenta ajustar las fuentes en una cuadrícula de píxeles de baja resolución, como en el arte ASCII o en el ancho del tallo de la pantalla, nunca es realmente uniforme porque la fuente no puede tener tallos anchos de píxeles integrales en todos los tamaños . Aquí hay una buena explicación con fotos.
Joey

1
probablemente el mejor aspecto
Ronan Dejhero

1
Jonathan Van Matre, gracias. El primer parámetro podría reducirse a 99, pero no me gustaría reducir el segundo, debido a la calidad de salida. (Me doy cuenta de que este es un desafío de código de golf, pero tengo mi orgullo.)
DavidC

25

Delphi 85 bytes

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

Lo sé, no es la solución más bonita, pero no había una regla que dijera que no podía usar recursos externos.
Resultado: Resultado


12
+1 por la creatividad de usar # como fondo en lugar de primer plano.
gerrit

1
Puede declarar s como en su TStringslugar. (Pero mantén la instanciación con TStringList.)
manatwork

¿El archivo que está cargando es algo que realmente se envía con Delphi, o lo escribió usted mismo? Si es lo último, creo que necesitarías contar su longitud como parte de tu puntaje.
Ilmari Karonen

@Ilmari, estoy seguro de que Delphi no se envía con un archivo con el arte ASCII "Hello-World" :) Además, en la respuesta se describe que usa recursos externos.
TLama

3
@TLama: Asumí que también, solo estaba tratando de expresarlo cortésmente. Mi punto es que, incluso si se permitieran recursos externos, este programa todavía fallaría en la computadora de cualquier persona, excepto de su autor (y, de hecho, no tenemos pruebas de que incluso funcione en su computadora). Además, puedo vencer a su puntuación con el siguiente script Perl: do X. El contenido del "recurso externo" Xse deja sin especificar (funciona para mí, ¿no es suficiente?), Pero he proporcionado un par de posibles sugerencias a continuación ...
Ilmari Karonen

15

Perl 5, 54 bytes / 71 caracteres ASCII imprimibles

Nota: Esta es la segunda versión de esta respuesta. Para la versión original de 64 bytes / 95 caracteres usando PHP y gzinflate (), vea el historial de esta respuesta .

Aquí está la versión ASCII imprimible de 71 caracteres:

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

La versión de 54 bytes contiene caracteres no imprimibles, por lo que la proporciono como un volcado hexadecimal. En los sistemas Unixish, puede usar xxd -rpara volver a convertir el volcado hexadecimal en un script Perl ejecutable:

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 deben ejecutarse perl -M5.010para habilitar la función Perl 5.10+ say. Producirán el siguiente resultado:

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

(Se muestra como una captura de pantalla, porque la gran altura de la línea en SE hace que el arte ASCII sea feo y difícil de leer. La minúscula "e" es un poco incómoda, pero creo que esto califica como legible, aunque sea apenas).


PD. Si la salida de la solución anterior se siente demasiado minimalista para usted, aquí hay una variante de 92 caracteres que produce una salida similar a la solución de Tomas :

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

Aquí hay una captura de pantalla:

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


Pps Estoy bastante seguro de que esta ( GolfScript, 51 caracteres ) es la solución ASCII imprimible más corta, si no cuenta las que simplemente llaman banner / FIGLet o que hacen trampa de alguna otra manera:

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

El resultado es el mismo que para mi solución Perl de 71 caracteres anterior.


Diría que acabas de cruzar la frontera de la legibilidad :-)
Tomás

1
Es considerablemente más legible en mi terminal que aquí en SE, debido al enorme espacio entre líneas aquí.
Ilmari Karonen

Quiero decir, es ilegible de todos modos. Por cierto , puedo producir su salida en 92 caracteres , sin algoritmo de compresión externo :-)
Tomas

@Tomas: Tienes razón, comprimir no parece ser la respuesta ganadora aquí. Te daría un +1 por eso si aún no lo hubiera hecho. Por cierto, puedo hacerlo en 71 caracteres; véase más arriba. :-)
Ilmari Karonen

1
Ilmari, no deberías haberme desafiado con unpack:-) Encontré una solución de 69 caracteres (87 con la buena salida mía).
Tomás

8

Concha + Figlet (35)

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

¿Qué tipo de fuente es esta? Esos solo parecen caracteres en mayúsculas más pequeños.
Cruncher

es banner -f bannerFue la primera fuente que encontré que usaba # en lugar de * o | y _.
sombrío


Cambiar "90" a "9" produce un mundo hola alto y delgado, sin embargo, debido a que el OP no se preocupa por las columnas o filas, debería ser aceptable.
alexyorke

A veces los votantes me desconciertan. ¿Cómo es que esto obtiene una puntuación neta de +8, pero la otra respuesta de figlet obtiene una puntuación neta de -3?
Trauma digital

8

Python 260 215 186 152

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

Python 196 183 130 114 (pero uglyer)

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

Usé datos comprimidos en la codificación base64. y el código lo decodifica desde la codificación base64 y luego lo descomprime.


¡Guau, eso es realmente una legibilidad!

7

PHP - 183 bytes

Usando el arte ASCII de sebcap26 como fuente ...

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

(Lo sé. Pero solo para completar, tiene que haber una mierda mental ^^ No se va a acortar mucho, ya que hay pequeñas repeticiones. El bucle de primera y segunda línea ya ...)

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

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


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

Combinando el generador de números e imagen de @ ASKASK con mis bucles y algunos ajustes adicionales, obtenemos:

Brainfuck, 343 339 336 334 Bytes

Sin embargo, parece más feo que mi versión original.

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

(imagen ver la respuesta de @ 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')

Salida:

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

Explicación:

El texto ASCII se compacta en una cadena donde cada bit representa un píxel :

  • 0 para SPACE
  • 1 para #

Se aplica un desplazamiento de 33 para obtener solo caracteres imprimibles.


Los corchetes y la returndeclaración de la primera función de flecha gruesa no son necesarios.
manatwork

@manatwork Intenté eliminarlo pero ya no estaba compilando. ¿Estás seguro de eso?
Florent


@manatwork Gracias!
Florent

charCodeAt(0)se puede reducir a charCodeAt().
Chiru

4

Sclipting , 38 caracteres (76 bytes)

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

Salida:

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

44
La página de información de código de golf dice "Si usa Unicode, el conteo de bytes debe usar UTF-8". Si no me equivoco, eso hace que su longitud de programa sea de 114 bytes . (Los 76 bytes que menciona serían para UTF-16 sin una lista de materiales.)
res

@res: Cambié eso, ya que no tiene sentido exigir eso. Mi intérprete de Sclipting entiende UTF-16 muy bien, por lo que es un programa válido codificado como UTF-16.
Timwi

1
Timwi, el caso importa
Tomás

3
@ user689 - en realidad "¡Hola Mundo!" con un signo de exclamación al final ...

1
Supongo que "aceptado por la comunidad" significa "aceptado, sin discusión comunitaria , por un pequeño número de personas con el poder para hacerlo".
res

3

Brainfuck, 362 bytes

Lo siento @ johannes-h, vi el tuyo y me inspiró a hacer el mío. Utiliza una combinación de generación de números más rápida al principio y una imagen más simple para generar el resultado en menos bytes. Sin embargo, no utiliza bucles en ningún otro lugar, por lo que está listo para la optimización.

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

que genera:

Foto


Hm. ¿Cuánto más corta es la generación de números? porque cambiar la imagen me parece una trampa (al menos al comparar directamente nuestras soluciones, perfectamente válido en este concurso, por supuesto) ^^ PERO voy a investigar la tuya más adelante :) Puedes tomar mi bucle por primera vez Sin embargo, dos líneas. Es mucho más corto (tenía unos 10-20 bytes si no recuerdo mal)
Johannes H.

bajó su versión a 343 Byte, vea mi respuesta
Johannes H.

e incluso más corto, reemplazando más repeticiones por bucles. 339 ahora.
Johannes H.

No tengo mala reputación para comentar sobre la tuya, pero si miras detenidamente tu nueva versión, encontrarás un "> <" que se puede eliminar para quitar dos bytes :)
PREGUNTAR

3

ImageMagick + sed, 71 bytes

No veo ninguna otra entrada de ImageMagick, así que aquí está mi apuesta tardía en el suelo:

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

Creo que la sedporción probablemente se pueda jugar un poco más.

Pruébalo en línea .

Salida:

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


2

Postdata, 154 133

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

es decir

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

Fuente exclusiva de ASCII, la inspiración para el arte ASCII fue la respuesta de Johannes H. :-)

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

(más legible en terminal)

Perl, 102

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

Mismo resultado que el anterior. Sé que perdí las dos respuestas de Perl anteriores, pero lo publico de todos modos. Al menos lo intenté y me estaba moviendo en la dirección correcta (y no había visto la respuesta más corta) :-).


2

Pure Bash, sin utilidades externas - 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

Utiliza desplazamiento a la derecha e izquierda (divide y multiplica por 2) y xor para encontrar los bits.

Datos de fuentes robados de Blender / Ilmari Karonen.

Probado en Bash 3.2 y 4.2

Por cierto, esto es solo 166 caracteres:

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

1

Pitón 3, 114

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

Salida (4 caracteres de altura e y W robado de @Ilmari Karonen ):

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

Y uno más corto (107):

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

Salida:

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

Es sobre todo ilegible. Su mundo de la segunda salida es en realidad Uorld.
Silviu Burcea

@SilviuBurcea: Se ve mejor en un emulador de terminal real. Además, "legible para humanos" le da un poco de margen de maniobra. Estoy seguro de que puedes adivinar qué es "¡HOLA, MUNDO!" medio.
Blender

Use constantes hexadecimales y afeite algunos caracteres
Floris

@ Floris: lo intenté. El prefijo de dos caracteres los hace tan largos hasta alrededor de 20 dígitos.
Licuadora

1

Python 154 Personajes, (Char 5X7 en tamaño)

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

Salida

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

1

Golpetazo:

(103 89 bytes)

Código:

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

Salida:

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

Más pequeño, pero menos legible (Basado en 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'

Salida:

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

1

Javascript / ES6 (108 bytes)

Copiar en la consola:

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

Salida:

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

(Necesita un navegador compatible con ECMAScript6, es decir, Firefox 22+)

Inspirado por @maximeeuziere, @ p01, @aemkei


.join('\n')se puede reducir a .join(` `)donde el espacio es un nuevo carácter de línea real.
Chiru

1

Autores: xem, aemkei, p01, jonas

Ejecute esto en la consola 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 en Firefox, 108 bytes

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

Resultado:

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

@ p01 hizo una versión más corta (118 bytes) aquí: twitter.com/p01/status/433230019419471872
aemkei

1

HTML, 209 caracteres

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

¿Esto cuenta? :)


1

Shell, 20 caracteres:

banner Hello-world\!

Para que esto funcione, por supuesto que necesita el bannerprograma. En Debian, puede obtenerlo instalando elbsdmainutils paquete.

Esto imprime una versión bellamente representada de su mensaje, diseñada para imprimirse en una de las antiguas impresoras de alimentación continua, por lo que la salida del texto anterior tiene 322 líneas de largo por 123 columnas de ancho, y gira la impresión de lado para leer el mensaje. Podrías colgar el papel resultante en la pared como una pancarta, de ahí el nombre.

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

EDITAR: Parece que Debian también tiene el sysvbannerpaquete, que instala un programa de banner que imprime el texto horizontalmente para mostrarlo en un terminal. Sin embargo, esto solo imprime los primeros 10 caracteres del mensaje, por lo que es un poco molesto para este problema de código de golf.


1
Creo que querías escribir banner hello-world.
Floris

@ Floris, gracias por el aviso. Fijo.
steveha

1
Tenga en cuenta que el banner apareció en Unix v7 en 1979 y se encuentra en prácticamente todos los Unix.
sch

@sch, estoy de acuerdo en que bannerestá disponible para prácticamente todos los UNIX. Acabo de poner el paquete Debian como una prueba conveniente de que no estaba inventando algo, para las personas que no lo sabían. En estos días, no esperaría encontrar bannerinstalado por defecto en UNIX, como tampoco esperaría encontrar una impresora de alimentación continua en un laboratorio de computadoras. Pero cualquier código de golf al hacer un texto de banner realmente debería tener el bannerprograma en algún lado. Es parte de nuestra rica historia cultural como geeks informáticos. :-)
steveha

1

bash, 175 170 bytes

¡Necesitas desperdiciar bastantes caracteres para producir una salida bonita !

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

Salida:

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

Puedes hacerlo más pequeño con 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))

Salida:

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

0

Python + pyfiglet - 87 caracteres

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

Salida

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

Para instalar pyfiglet, ejecute:

$ pip install pyfiglet

0

Python con pyfiglet: 66 usando argv, 69 sin

66:

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

69:

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

los abetos deben llamarse como, por ejemplo:

python asciiart.py '¡Hola, mundo!'

segundo:

python asciiart.py.

Salida:

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

(Bueno, se ve un poco mal con esta fuente. Sin embargo :))

[edit] eliminó el guión obsoleto del argumento.


¿Por qué el guión adicional frente a la salida?
Ilmari Karonen

Mi error, ese es el resultado del que usa argv, donde usé un guión antes del argumento (cuestión de costumbre, ya que uso bash todo el tiempo). Lo editaré, gracias.
Taku

0

Javascript 137 (134)

Utiliza los bits de números enteros para representar objetos punzantes y espacios en blanco. Probado con 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 (rotados 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)

Hay un espacio adicional entre los caracteres para que sea mejor legible. Entonces, técnicamente es una solución de 125 caracteres.

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

Salida:

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

0

Golpe 37 , 33

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

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

Que es lo mismo que:

echo "Hello-world" | toilet

Desde man toilet

TOIlet - muestra un personaje grande y colorido

Con tr "'\"m" "#"todos los "caracteres se reemplazan con #.


trLos parámetros se escaparían más brevemente de lo citado. Quiero decir en tr \'\"m \#lugar de tr "'\"m" "#".
manatwork

Oh bueno, no estaba al tanto de eso. Gracias @manatwork
fedorqui

Espera un segundo. La toiletsalida no tenía una cita única. ¿Por qué lo incluiste en trel primer parámetro? Solo tr \"m \#es suficiente.
manatwork

@manatwork Creo que necesito más café :)
fedorqui

0

Smalltalk, 151

aunque este juego de golf ya terminó, para la referencia:

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]

salida:

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

Solo tiene que usar caracteres '' (espacios) y '#' (también caracteres de nueva línea).
Mukul Kumar

mi error; el resultado fue de una ejecución anterior; el código es correcto "{$ #. $} en: p + 1".
blabla999
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.