ASCII-Kunst “Hello-World!” [Geschlossen]


39

Ihr Ziel ist es, das kürzeste Programm zu schreiben, das "Hello-World!" als ASCII art.

Regeln:

  • Es muss von Menschen lesbar sein, es ist mir egal, wie groß es ist (Spalten / Zeilen)
  • Die Ausgabe darf nur Leerzeichen (""), Punkte ("#") und Zeilenumbrüche enthalten
  • Die Ausgabe muss mit einer monospaced Schriftart funktionieren (die Buchstaben müssen jedoch keine monospaced Schriftart verwenden)
  • Im Ergebnis muss jedes Zeichen durch mindestens ein Leerzeichen voneinander getrennt sein

Bitte fügen Sie einen Titel mit der Sprache und der Anzahl der Bytes in Ihrem Code hinzu.


5
bash: 33 zeichen - pastebin.com/HZ1w8z8g Ist das akzeptabel?
Manatwork

4
Warum der Bindestrich? ...
Timwi

1
Ich nehme an, dass die Verwendung von vordefinierten Funktionen wie HQ9 + unmöglich oder undurchführbar erschwert wird.
Manatwork

1
@PeterTaylor: Die Ausgabe, die aus Leerzeichen und Hashes besteht, muss mit einer monospaced Schriftart funktionieren, aber die Buchstaben, die durch die Vielzahl von Hashes dargestellt werden, müssen nicht alle die gleiche Breite haben.
Timwi

Antworten:


18

Ich habe es absolut genossen

Perl, 126 116 114 102 98   87 (69) Zeichen (nur ASCII und keine externen Schriftarten)

Ab sofort kürzeste ASCII-Lösung, die keine externen Schriften verwendet.

Nun, ich wollte eine elegante Lösung vorstellen, aber @Ilmari Karonen forderte mich heraus unpack... hätte das nicht tun sollen :-)

Nun, dieser 92 88 69 Zeichen Code erzeugt die hässliche unlesbare Ausgabe, die mit der von @Ilmari Karonen identisch ist:

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

Elegantere Variante ohne Auspacken (88 Zeichen):

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

Aber ich denke so |. | E || .- |||., D! ding ist nichts was hallo-welt ähnelt! und sollte nicht erlaubt sein, also echte Lösung geht hier - Auspackvariante, 87 Zeichen :

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

Ausgabe:

Bildbeschreibung hier eingeben

Elegantere Variante mit 98 Zeichen:

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

Ausgabe:

Bildbeschreibung hier eingeben

Ältere Lösung (114 Zeichen), andere Art der Codierung:

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

Ausgabe:

Bildbeschreibung hier eingeben


Habe das Ausrufezeichen am Ende vergessen, also Hallo-Welt! Auch sollte Kleinbuchstaben sein e, aber ich weiß, Sie haben Großbuchstaben gemacht, um es als fünf Pixel hohe Schrift lesbar zu machen ...

47

JavaScript, 178 Byte

c=document.createElement("canvas").getContext("2d");c.fillText("Hello-World!",0,7);d=c.getImageData(1,0,56,7).data;s="";for(i=3;i<1568;i+=4){s+=d[i]?"#":" ";s+=(i+1)%224?"":"\n"}

Das funktioniert in Firefox 27 Scratchpad.

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

Ich erkenne Arial :-D
Timwi

4
Das ist mein Favorit. Sie haben eine interessante Methode angewendet, um zur Lösung zu gelangen. Wunderbar!
Darth Egregious

2
Genial, ich glaube, Sie haben gerade Figlet für JavaScript erstellt;)
WallyWest

Verdammt, das war auch mein erster Gedanke! Hier ist eine Gegenstimme. :)
Jordan Gray

37

Mathematica 101 99 98

Dies rastert den Ausdruck, erhält die binären Bilddaten, konvertiert jede 1 in "#", jede 0 in "" (Leerzeichen) und zeigt die Ausgabe in einem 12 mal 130 Zeichen großen Raster an.

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

Hallo

Ein Charakter, der dank Jonathan Van Matre gespart wurde.


1
Warum variiert die Dicke zwischen den ls?
MrZander

Ich habe den Ausdruck als einzelnes Bild gerastert. Wenn ich es Brief für Brief getan hätte, wären die ls identisch gewesen. Durch Erhöhen der Rastergröße nähert sich die Ausgabe der Qualität der gedruckten Zeichen an. Ein größeres Raster führt jedoch zu einem relativ kleineren "#", so dass sie nur noch Pixel zu sein scheinen. Die Frage bleibt: Warum erhalten 2 ls in einem Bild unterschiedliche Gewichte?
DavidC

3
@MrZander, genau das ist der Grund, warum Schriftarten Hinweise haben: Wenn Sie versuchen, Schriftarten in ein Pixelraster mit niedriger Auflösung wie in ASCII-Grafiken oder auf dem Bildschirm einzufügen, ist die Breite der Stiele nie wirklich einheitlich, da die Schrift nicht bei allen Größen ganzzahlige Pixel haben kann . Hier ist eine schöne Erklärung mit Bildern.
Joey

1
wahrscheinlich das am besten aussehende
Ronan Dejhero

1
Jonathan Van Matre, vielen Dank. Der erste Parameter könnte auf 99 reduziert werden, aber ich möchte den zweiten aufgrund der Ausgabequalität nicht reduzieren. (Mir ist klar, dass dies eine Code-Golf-Herausforderung ist, aber ich bin stolz darauf.)
DavidC

25

Delphi 85 Bytes

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

Ich weiß, es ist nicht die schönste Lösung, aber es gab keine Regel, die besagte, dass Sie keine externen Ressourcen verwenden könnten.
Ergebnis: Ergebnis


12
+1 für die Kreativität, # als Hintergrund und nicht als Vordergrund zu verwenden.
Gerrit

1
Sie können TStringsstattdessen s als deklarieren . (Aber behalten Sie die Instanziierung bei TStringList.)
manatwork

Entspricht die Datei, die Sie laden, etwas, das im Lieferumfang von Delphi enthalten ist, oder haben Sie sie selbst geschrieben? In letzterem Fall müssten Sie die Länge als Teil Ihrer Punktzahl zählen.
Ilmari Karonen

@Ilmari, ich bin sicher, Delphi wird nicht mit einer Datei mit "Hello-World" ASCII-Grafik ausgeliefert :) Außerdem wird in der Antwort beschrieben, dass externe Ressourcen verwendet werden.
TLama

3
@TLama: Das habe ich auch angenommen, ich wollte es nur höflich ausdrücken. Mein Punkt ist, dass, selbst wenn externe Ressourcen erlaubt wären, dieses Programm auf jedem Computer außer dem des Autors immer noch fehlschlagen würde (und tatsächlich haben wir keinen Beweis, dass es sogar auf seinem Computer funktioniert). Auch ich kann seine Gäste mit dem folgenden Perl - Skript schlagen: do X. Der Inhalt der "externen Ressource" Xist nicht spezifiziert (es funktioniert für mich, ist das nicht genug?), Aber ich habe unten ein paar mögliche Vorschläge gemacht ...
Ilmari Karonen

15

Perl 5, 54 Byte / 71 druckbare ASCII-Zeichen

Hinweis: Dies ist die zweite Version dieser Antwort. Informationen zur ursprünglichen 64-Byte- / 95-Zeichen-Version mit PHP und gzinflate () finden Sie im Verlauf dieser Antwort .

Hier ist die druckbare ASCII-Version mit 71 Zeichen:

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

Die 54-Byte-Version enthält nicht druckbare Zeichen, daher stelle ich sie als Hex-Dump zur Verfügung. Auf Unixish-Systemen können Sie xxd -rden Hex-Dump wieder in ein ausführbares Perl-Skript umwandeln :

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

Beide müssen mit ausgeführt werden perl -M5.010, um die Perl 5.10+ say-Funktion zu aktivieren . Sie werden die folgende Ausgabe erzeugen:

Screenshot von "Hello-World!"  ASCII art

(Als Screenshot gezeigt, weil die große Zeilenhöhe in SE ASCII-Grafiken hässlich und schwer lesbar macht. Das Kleinbuchstaben "e" ist etwas umständlich, aber ich glaube, dass dies als lesbar gilt, wenn auch kaum.)


Ps. Wenn sich die Ausgabe der obigen Lösung für Sie zu minimalistisch anfühlt, finden Sie hier eine Variante mit 92 Zeichen , die eine Ausgabe ähnlich der von Tomas erzeugt :

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

Hier ist ein Screenshot:

Screenshot von "Hello-World!"  ASCII art


Pps. Ich bin mir ziemlich sicher, dass dies ( GolfScript, 51 Zeichen ) die kürzeste druckbare ASCII-Lösung ist, wenn Sie nicht diejenigen zählen, die nur banner / FIGLet oder auf andere Weise cheaten:

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

Die Ausgabe ist die gleiche wie für meine 71-Zeichen-Perl-Lösung oben.


Ich würde sagen, Sie haben gerade die Grenze der Lesbarkeit überschritten :-)
Tomas

1
In meinem Terminal ist es aufgrund des großen Zeilenabstands erheblich besser lesbar als hier auf SE.
Ilmari Karonen

Ich meine, es ist sowieso nicht lesbar. Übrigens kann ich Ihre Ausgabe in 92 Zeichen ohne externen Komprimierungsalgorithmus erzeugen :-)
Tomas

@Tomas: Du hast recht, Zippen scheint hier nicht die beste Antwort zu sein. Ich würde dir dafür eine +1 geben, wenn ich es nicht schon getan hätte. BTW, ich kann es in 71 Zeichen tun; siehe oben. :-)
Ilmari Karonen

1
Ilmari, du hättest mich nicht herausfordern sollen mit unpack:-) Habe eine Lösung mit 69 Zeichen gefunden (87 mit der netten Ausgabe von mir).
Tomas

8

Muschel + Figlet (35)

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

Was ist das für eine Schriftart? Diese sehen aus wie kleinere Großbuchstaben.
Cruncher

Es ist ein Banner. -f bannerEs war die erste Schriftart, die ich gefunden habe und die # anstelle von * oder | verwendete und _.
grimmig


Das Ändern von "90" in "9" führt zu einer großen und schlanken Hallo-Welt. Da sich das OP jedoch nicht um Spalten oder Zeilen kümmert, sollte dies akzeptabel sein.
Alexyorke

Manchmal verblüffen mich die Wähler. Wie kommt es, dass dies eine Nettowertung von +8 ergibt , die andere Feigenantwort jedoch eine Nettowertung von -3?
Digital Trauma

8

Python 260 215 186 152

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

Python 196 183 130 114 (aber hässlicher)

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

Ich habe gezippte Daten in Base64-Codierung verwendet. und der Code decodiert es aus der Base64-Codierung und entpackt es dann.


Wow, das ist wirklich gut lesbar!

7

PHP - 183 Bytes

Verwenden von sebcap26s ASCII-Kunst als Quelle ...

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

(Ich weiß, aber der Vollständigkeit halber muss es einen Brainfuck geben. ^^ Es wird nicht viel kürzer, da es nur kleine Wiederholungen gibt. Erste und zweite Line-Schleife schon ...)

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

Dolmetscher hier: http://koti.mbnet.fi/villes/php/bf.php


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

Wenn Sie den Zahlengenerator und das Bild von @ ASKASK mit meinen Loops und einigen zusätzlichen Optimierungen kombinieren, erhalten Sie:

Brainfuck, 343 339 336 334 Bytes

Sieht allerdings hässlicher aus als meine Originalversion.

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

(Bild siehe @ ASKASK's Antwort)


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

Ausgabe:

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

Erläuterung:

Der ASCII-Text wird zu einer Zeichenfolge komprimiert, in der jedes Bit ein Pixel darstellt :

  • 0 zum SPACE
  • 1 zum #

Ein Versatz von 33 wird angewendet, um nur druckbare Zeichen zu erhalten.


Die Klammern und returnAnweisungen der ersten Fettpfeilfunktion sind nicht erforderlich.
Manatwork

@manatwork Ich habe versucht, es zu entfernen, aber dann wurde es nicht mehr kompiliert. Bist du dir da sicher?
Florent


@manatwork Danke!
Florent

charCodeAt(0)kann reduziert auf charCodeAt().
Chiru

4

Sclipting , 38 Zeichen (76 Bytes)

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

Ausgabe:

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

4
Auf der Code-Golf- Infoseite steht "Wenn Sie Unicode verwenden, sollte die Byteanzahl UTF-8 verwenden." Wenn ich mich nicht irre, ergibt das eine Programmlänge von 114 Bytes . (Die 76 Bytes , die Sie für UTF-16 wären erwähnen ohne BOM.)
res

@res: Ich habe das geändert, da es keinen Sinn macht, das zu fordern. Mein Sclipting-Interpreter versteht UTF-16 einwandfrei, daher ist es ein gültiges Programm, das als UTF-16 codiert ist.
Timwi

1
Timwi, case matters
Tomas

3
@ user689 - eigentlich "Hallo-Welt!" mit einem Ausrufezeichen am Ende ...

1
Ich nehme an, "von der Gemeinschaft akzeptiert" bedeutet " von einer kleinen Anzahl von Personen, die dazu befugt sind, ohne Diskussion in der Gemeinschaft akzeptiert ".
Res

3

Brainfuck, 362 Bytes

Sorry @ johannes-h, ich habe deine gesehen und war inspiriert, meine eigenen zu machen. Es verwendet eine Kombination aus einer schnelleren Nummerngenerierung am Anfang und einem einfacheren Bild, um das Ergebnis in weniger Bytes zu generieren. Es werden jedoch nirgendwo anders Schleifen verwendet, sodass eine Optimierung erforderlich ist.

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

was erzeugt:

Bild


Hm. Wie viel kürzer ist die Nummerngenerierung? Denn das Ändern des Bildes sieht für mich nach Schummeln aus (zumindest beim direkten Vergleich unserer Lösungen - natürlich perfekt für diesen Wettbewerb) zwei Zeilen jedoch. Es ist viel kürzer (war etwa 10-20 Bytes, wenn ich mich richtig erinnere)
Johannes H.

habe deine Version auf 343 Byte reduziert, siehe meine Antwort
Johannes H.

und noch kürzer, indem mehr Wiederholungen durch Schleifen ersetzt werden. 339 jetzt.
Johannes H.

Ich habe nicht genug Reputation, um deine zu kommentieren, aber wenn du dir deine neue Version genau ansiehst, wirst du dort ein "> <" finden, das gelöscht werden kann, um zwei Bytes
wegzunehmen

3

ImageMagick + sed, 71 Bytes

Ich sehe keine anderen ImageMagick-Einträge, also ist hier mein letzter Einsatz im Boden:

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

Ich denke die sedPortion kann wahrscheinlich noch etwas mehr golfen werden.

Probieren Sie es online aus .

Ausgabe:

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


2

Nachschrift, 154 133

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

dh

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

ASCII-Quelle, Inspiration für ASCII-Kunst war die Antwort von Johannes H. :-)

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

(besser lesbar im Terminal)

Perl, 102

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

Gleiche Ausgabe wie oben. Ich weiß, dass ich gegen die beiden obigen Perl-Antworten verloren habe, aber ich veröffentliche es trotzdem. Zumindest habe ich versucht, mich in die richtige Richtung zu bewegen (und hatte nicht die kürzeste Antwort gesehen) :-).


2

Pure Bash, keine externen Dienstprogramme - 133 Zeichen:

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

Verwendet Rechts- und Linksverschiebung (dividieren und multiplizieren mit 2) und xoder, um die ein Bits zu finden.

Von Blender / Ilmari Karonen gestohlene Schriftdaten.

Getestet in Bash 3.2 und 4.2

Das sind übrigens nur 166 Zeichen:

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

1

Python 3, 114

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

Ausgabe (4- stellig groß, e und W von @Ilmari Karonen gestohlen ):

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

Und eine kürzere (107):

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

Ausgabe:

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

Es ist meistens nicht lesbar. Ihre Welt von der 2. Ausgabe ist eigentlich Uorld.
Silviu Burcea

@SilviuBurcea: Auf einem tatsächlichen Terminalemulator sieht es besser aus. "Menschenlesbar" gibt Ihnen auch ein bisschen Bewegungsspielraum. Ich bin sicher, Sie können sich vorstellen, was "HALLO OORLD!" meint.
Blender

Verwenden Sie Hex-Konstanten und rasieren Sie ein paar Zeichen aus
Floris

@ Floris: Das habe ich versucht. Mit dem zweistelligen Präfix sind sie bis zu 20 Stellen lang.
Blender

1

Python 154 Zeichen, (Char 5X7 in der Größe)

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

Ausgabe

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

1

Bash:

(103 89 Bytes)

Code:

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

Ausgabe:

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

Kleiner, aber weniger lesbar (Basierend auf http://mckgyver.pbworks.com/f/1240440791/3PixelFont.jpg ):

Code:

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

Ausgabe:

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

1

Javascript / ES6 (108 Byte)

In Konsole kopieren:

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

Ausgabe:

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

(Benötigt ECMAScript6 kompatiblen Browser zB Firefox 22+)

Inspiriert von @maximeeuziere, @ p01, @aemkei


.join('\n')kann auf die Stelle reduziert werden, .join(` `)an der das Leerzeichen ein tatsächliches Zeichen für eine neue Zeile ist.
Chiru

1

Autoren: xem, aemkei, p01, jonas

Führen Sie dies in der JS-Konsole aus.

JavaScript, browserübergreifend, 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, funktioniert mit Firefox, 108 Bytes

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

Ergebnis:

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

@ p01 hat hier eine kürzere Version (118 Bytes) erstellt: twitter.com/p01/status/433230019419471872
aemkei

1

HTML, 209 Zeichen

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

Zählt das? :)


1

Shell, 20 Zeichen:

banner Hello-world\!

Dazu benötigen Sie natürlich das bannerProgramm. Unter Debian können Sie es erhalten, indem Sie das bsdmainutilsPaket installieren .

Dadurch wird eine wunderschön gerenderte Version Ihrer Nachricht gedruckt, die auf einem der alten Endlosdrucker gedruckt werden soll. Die Ausgabe des obigen Texts ist also 322 Zeilen lang und 123 Spalten breit, und Sie drehen den Ausdruck zum Lesen auf die Seite die Nachricht. Sie könnten das resultierende Papier als Banner an die Wand hängen, daher der Name.

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

BEARBEITEN: Es sieht so aus, als hätte Debian auch das sysvbannerPaket, das ein Bannerprogramm installiert, das den Text horizontal druckt, um ihn auf einem Terminal anzuzeigen. Dies gibt jedoch nur die ersten 10 Zeichen der Nachricht aus, was für dieses Code-Golf-Problem ärgerlich ist!


1
Ich glaube du wolltest schreiben banner hello-world.
Floris

@ Floris, danke für das Heads-up. Fest.
Steveha

1
Beachten Sie, dass Banner 1979 auf Unix v7 erschienen sind und auf praktisch jedem Unix zu finden sind.
sch

@sch, ich bin damit einverstanden, dass bannerfür praktisch jeden UNIX verfügbar ist. Ich habe das Debian-Paket nur als praktischen Beweis dafür verwendet, dass ich mir nicht nur etwas ausgedacht habe, für Leute, die nichts davon wussten. Heutzutage würde ich nicht mehr erwarten, dass bannerein UNIX-Computer standardmäßig installiert ist, als ich einen Endlosdrucker in einem Computerlabor vorfinden würde. Aber jeder Code, der sich mit der Erstellung von Bannertexten befasst, sollte das bannerProgramm irgendwo enthalten. Es ist Teil unserer reichen Kulturgeschichte als Computerfreaks. :-)
Steveha

1

Bash, 175-170 Bytes

Sie müssen einige Zeichen verschwenden , um eine schöne Ausgabe zu erzielen !

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

Ausgabe:

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

Sie können es mit lzma / unlzma verkleinern
Emmanuel

0

F # - 204 Zeichen

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

Ausgabe:

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

0

Python + Pyfiglet - 87 Zeichen

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

Ausgabe

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

pyfigletFühren Sie zum Installieren Folgendes aus:

$ pip install pyfiglet

0

Python mit Pyfiglet: 66 mit argv, 69 ohne

66

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

69

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

firs muss heißen wie zum Beispiel:

python asciiart.py "Hallo-Welt!"

zweite:

python asciiart.py.

Ausgabe:

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

(Nun, es sieht irgendwie beschissen mit dieser Schriftart aus. Trotzdem :))

[edit] hat den veralteten Gedankenstrich aus dem Argument entfernt.


Warum der zusätzliche Strich vor der Ausgabe?
Ilmari Karonen

Mein Fehler, das ist die Ausgabe von der mit argv, bei der ich vor dem Argument einen Bindestrich verwendet habe (Gewohnheitsache, da ich die ganze Zeit Bash verwende). Ich werde es bearbeiten, danke.
Taku

0

Javascript 137 (134)

Verwendet die Bits von Ganzzahlen, um scharfe und weiße Räume darzustellen. Getestet mit Firefox 27.

137 Zeichen

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 Zeichen (um 180 ° gedreht)

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)

Zwischen den Zeichen befindet sich ein zusätzlicher Abstand, um die Lesbarkeit zu verbessern. Technisch handelt es sich also um eine 125-Zeichen-Lösung.

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

Ausgabe:

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

0

Bash 37 , 33

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

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

Welches ist das gleiche wie:

echo "Hello-world" | toilet

Von man toilet

TOIlet - zeigt einen großen, farbenfrohen Charakter an

Mit werden tr "'\"m" "#"alle "Zeichen durch ersetzt #.


trDie Parameter von wären kürzer als angegeben. Ich meine tr \'\"m \#statt tr "'\"m" "#".
Manatwork

Oh gut, das war mir nicht bewusst. Thanks @manatwork
fedorqui

Warte kurz. Die toiletAusgabe enthielt kein einfaches Anführungszeichen. Warum haben Sie es in trden 1. Parameter aufgenommen? Einfach tr \"m \#ist genug.
Manatwork

@ Manatwork Ich glaube, ich brauche mehr Kaffee :)
Fedorqui

0

Smalltalk, 151

obwohl dieses golfspiel schon vorbei ist, als referenz:

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]

Ausgabe:

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

Sie müssen nur '' (Leerzeichen) und '#' (auch Zeilenvorschubzeichen) verwenden.
Mukul Kumar

mein Fehler; Die Ausgabe stammte aus einem vorherigen Lauf. Der Code ist korrekt "{$ #. $} at: p + 1".
Blabla999
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.