Leider ist gestern Nachmittag einer der größten Comicautoren verstorben. Viele Hollywoodstars, Musiker, Schauspieler und viele andere Menschen würdigen diesen großartigen Schriftsteller, also müssen wir auch etwas tun.
Herausforderung
Drucken Sie das Avengers-Logo
Hinweis: Sie können anstelle von # ein beliebiges anderes Zeichen als ein Leerzeichen verwenden. während Sie ein Leerzeichen für das Leerzeichen verwenden müssen
In ASCII-Kunst
######
###############
##### ##########
#### ####### ####
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### ########### ###
### ########### ###
### #### ### ###
### ### ### ###
#### #### ####
######## ######
#################
###
Optional
Wer war (Ihrer Meinung nach) sein größter Held und Bösewicht im gesamten Wunderuniversum?
Standard Code-Golfregeln gelten
code-golf
ascii-art
kolmogorov-complexity
Luis Felipe De Jesus Munoz
quelle
quelle
Antworten:
Jelly ,
625958 BytesVielen Dank an @JonathanAllan für das Abschlagen von 1 Byte!
Probieren Sie es online!
Wie es funktioniert
ist ein bijektives Basis-250-Integer-Literal, das die Zeichen in Jellys Codepage als Ziffern verwendet.
Das Literal codiert die ganze Zahl , die konvertiert zu duodecimal, wodurch man .10250938842396786963034911279002199266186481794751691439873548591280332406943905758890346943197901909163 30 b 620 b 40 b ein 54 a 64771433841333139413468423468423467433467433466 b 466 b 465453465363431424 b 43.896.860 b ein 3 1230 b 620 b 40 b a 54 a 64771433841333139413468423468423467433467433466 b 466 b 465453465363431424 b 43896860 b a 312
b12
Es gibt einige Nullen, da 14 Leerzeichen (z. B.) als 3 Leerzeichen, 0 Hashes und 11 Leerzeichen codiert sind. Dies hält die Basis klein (der größte Lauf besteht aus 17 Hashes), ohne dass dem Decoder zusätzliche Logik hinzugefügt wird.
Ė
(Aufzählung) Setzt jedem 12-stelligen Basiswert den Index 1 voran undŒṙ
führt dann eine Lauflängendecodierung durch.Extrahieren Sie nun für jede Ganzzahl im resultierenden Array
Ḃ
das niedrigstwertige Bit unda⁶
ersetzen Sie die Einsen durch Leerzeichen (UND-Zeichen), wobei die Nullen unverändert bleiben.Zum Schluss wird
s27
das unformatierte Zeichenarray in Abschnitte der Länge 27 aufgeteilt, dieY
durch Zeilenvorschübe voneinander getrennt sind.quelle
R ,
198,173,163,157,144, 142 BytesProbieren Sie es online!
Auch
R
Ehrungen an den großen Stan.Anmerkungen :
#
wir das Zeichen verwendet,4
weil es 2 Bytes spart und:4
scheint ein Mini "schräg"A
)Erklärung :
Durch Anwenden einer Lauflängencodierung (
rle
Funktion) auf die Zeichen der Zeichenfolge (ausgenommen'\n'
) werden 88 Wiederholungen des Wechsels zurückgegeben<space>,<hash>,<space>,<hash>,<space>,<hash>...
.Die 88 Wiederholungen sind alle Werte im Bereich,
[1,17]
also summieren64
wir die Codepunkte der Buchstaben[A...Q]
, die die Zeichenfolge erhalten:"NFMOJEDJFDGGADCCHDACCCACIDACDFHDBCDFHDBCDFGDCCDFGDCCDFFKDFFKDFEDECDFECFCDCADBDKDCHIFHQJC"
Daher führt der Code im Wesentlichen die entgegengesetzten Operationen aus:
quelle
#
, sollten durch die Verwendung0
von anstelle von"#"
2 weitere Bytes eingespart werden. @ J.Doe, das könnte auch für dein gzip besser funktionieren.Bubblegum ,
71666564 BytesVielen Dank an @ovs für das Abschlagen von 1 Byte!
Probieren Sie es online!
quelle
#
auf umgeschaltet!
.Python 2, 129 Bytes
Probieren Sie es online!
quelle
\n
aus der komprimierten Zeichenkette entfernt.Kohle ,
716867 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Geben Sie die Hälfte des Kreises aus.
Reflektiere es und zeichne den Boden ein.
Zeichnen Sie den linken Arm und die Querlatte des A.
Zeichne den rechten Arm des A.
Ändern Sie alle Zeichen in
#
s.quelle
C (gcc) ,
244,243,242 BytesProbieren Sie es online!
-1 Danke an Peter Cordes
-1 Danke an ceilingcat
Verwendet Bit-Komprimierung.
Erläuterung:
Das Ziel ist es, eine Reihe von Zahlen in Binärform mit Leerzeichen und # als Ziffern zu drucken, die das Logo darstellen. Ein bisschen Bash-Magie wandelt das Logo in Binärmasken um:
Dies führt zu folgenden binären 'Zahlen':
Es gibt ein offensichtliches Muster in der Mitte, in dem jede Zeile enthält
### ### ###
Sie können Platz sparen, indem Sie den mittleren Bereich komprimieren, indem Sie das Muster speichern und eine ODER-Verknüpfung erstellen. Außerdem werden in all diesen Zeilen links vom mittleren Abschnitt lediglich einige Elemente hinzugefügt, sodass das
z
Makro erstellt wird, in??????????????
das es aufgenommen und konvertiert wird###??????????????### ###
. Dies beinhaltet eine Bitverschiebung um 10 nach links und eine ODER-Verknüpfung mit der Binärzahl dieses Musters, nämlich 117441415.Jetzt können wir den Code leichter verstehen:
quelle
x?y:0
durch ersetztx&&y
werden oder funktioniert die Operatorrangfolge nicht? Vielleicht mit,&
anstatt,
die 3 Funktionsaufrufe zu trennen, weil sie&
eine höhere Priorität haben als&&
oder,
( en.cppreference.com/w/c/language/operator_precedence ). Oder nicht, weil nur,
ein Sequenzpunkt für das Drucken im Vergleich zur Rekursion bereitgestellt wird, um undefiniertes Verhalten zu vermeiden.&&
Tat nicht, weil es Vorrang hat, während&
es nicht kurzschließt. Bisher habe ich keine kürzere Alternative gefunden, obwohl ich eine nicht ausschließen würde.&
oder|
oder^
ersetzen,
( weil sie nicht kurzschließen) und&&
ersetzen?
(weil es tut). Like_<19 && b() & puts() & main(_+1);
(Leerzeichen zur besseren Lesbarkeit hinzugefügt). Die Auswertungsreihenfolge ist undefiniert, was tatsächlich undefiniertes Verhalten aufgrund von nicht aufeinander folgenden Nebenwirkungen aufstdout
en.cppreference.com/w/c/language/eval_order zur Folge haben kann. In der Praxis wählt jedoch jeder Compiler eine bestimmte Reihenfolge für einen bestimmten Satz von target + aus Optionen.T-SQL,
341338 BytesDie ersten 4 Zeilenumbrüche dienen nur der Lesbarkeit, der letzte Zeilenumbruch ist Teil eines String-Literal.
Ähnlich wie bei meinem Adam West-Tribut habe ich eine lange Zeichenfolge manuell codiert und die folgenden Ersetzungen vorgenommen:
*7
wird ersetzt durch+REPLICATE('#',7)
$4
wird ersetzt durch+SPACE(4)
&
wird durch einen Zeilenumbruch in Anführungszeichen ersetztDies führt zu einer massiven SQL-Befehlszeichenfolge:
Welches, wenn es ausgeführt wird, die notwendige Ausgabe erzeugt.
Lang, aber immer noch besser als meine beste satzbasierte Lösung ( 463 Byte ):
quelle
CHAR(8000)
VARCHAR(max)
CHAR(2E3)
aber das schien mir nicht zu gefallen. Ich habe auch ein Byte mit einem Zeilenumbruch-Literal anstelle von gespeichertCHAR(13)
.Canvas ,
747371 BytesProbieren Sie es hier aus!
quelle
JavaScript (ES6),
173-170ByteProbieren Sie es online!
Node.js , 163 Bytes
Vorausgesetzt, ein Array von Strings ist eine gültige Ausgabe:
Probieren Sie es online!
quelle
05AB1E ,
1018864 Bytes-24 Bytes durch Erstellen eines Ports von @ Dennis ♦ 'Jelly answer .
Probieren Sie es online aus.
Erläuterung:
Sehen Sie sich meinen Tipp 05AB1E an (Abschnitte So komprimieren Sie große Ganzzahlen und So komprimieren Sie Ganzzahllisten ), um zu verstehen, wie die Komprimierung von Ganzzahl und Liste funktioniert.
quelle
•∍ΔÎë,½=bOÅ.âαUΔ'òõƶαÔγλ#xÆ]~”FbćÁ˜Ð”wнQ_wā©•12вDg„ #s∍S×J27ô»
durch Ersetzen von„#
undεN>yи}˜è
durchDg„ #s∍S×
C (gcc) ,
174168164160 Bytes-6 Bytes dank Dennis.
Probieren Sie es online!
quelle
/// 170 Bytes
Probieren Sie es online!
quelle
Bash ,
192176 BytesProbieren Sie es online!
-16 dank manatwork
Dies ist ähnlich zu meiner C-Antwort, außer dass nur eine rohe Base-16-Komprimierung verwendet wird und diese durch bc geleitet wird. Anschließend wird mit tr 1 in # und 0 in Leerzeichen konvertiert. An jede Zeile wird 1 angehängt und entfernt, um die Ausrichtung beizubehalten.
Ist leider
dc
kürzer alsbc
.quelle
^
. Aber noch besser, verwenden Siecut -c2-
anstelle dessed
Teils.echo
und noch kürzer mitdc
stattbc
: Versuchen Sie es online!echo
, aber komm schon -dc
für Stan Lee ... du machst wohl Witze;)Haskell,
170163 BytesEdit: -7 Bytes dank @ Ørjan Johansen
Probieren Sie es online!
Leerzeichen werden als Großbuchstaben (Länge:
Z
bis zum Zeichen), Hash-Zeichen als Kleinbuchstaben (Länge:a
bis zum Zeichen ) und die letzten drei#
jeder Zeile plus Zeilenumbruch als Leerzeichen codiert. Funktionm
dekodiert es.quelle
"###\n"
.Perl 6 ,
136112 BytesProbieren Sie es online!
Analysiert eine Zahl zur Basis 128 aus den Ordnungswerten der komprimierten Zeichenfolge, konvertiert zur Basis 2 und ersetzt das
1
s durch Leerzeichen. Dies verwendet Nullen als Hauptcharakter. Die Zeichenkette hat ungefähr 9 Null-Bytes, was eine Hündin war, die in TIO eingegeben wurde. Ich hätte Base 127 für die gleiche Anzahl von Bytes verwendet, aber keine Nullen, aber das hat einen Wagenrücklauf, der unmöglich von einer Newline zu unterscheiden scheint:(
Erläuterung:
quelle
J ,
130128 BytesProbieren Sie es online!
Anfangslösung
J , 164 Bytes
Probieren Sie es online!
quelle
PHP ,
286212209208 BytesProbieren Sie es online!
quelle
Perl 5 , 181 Bytes
Probieren Sie es online!
quelle
MATLAB : 144 Bytes
Probieren Sie es online! (Technisch in Oktave)
Erläuterung:
Dies verwendet die gleiche Strategie wie digEmAll in R, nur mit MATLAB-Syntax. Der Hauptunterschied besteht darin, dass MATLAB automatisch Zeichen in ganze Zahlen konvertiert.
quelle
C # (.NET Core) , 199 Byte
Probieren Sie es online!
Verwendet den gleichen Ansatz wie meine Lösung für die Hommage an Adam West .
quelle
Deadfish ~ ,
726723 Bytes-3 Bytes dank @squid
Probieren Sie es online!
Da ich noch nie etwas Wunderbares gesehen / gelesen habe und mich nur auf Spoiler verlasse, scheint Thanos der Beste zu sein.
quelle
Turing-Maschine aber viel schlimmer - 16913 Bytes
Mit dem Programmgenerator von ASCII_only erstellt
quelle
entleeren, 79 Bytes
eJyVkcsJADAIQ ++ ZIpD9dyxUqrGUgjlpHvglXdqCJymk1yEiaRXEIOXzuBHCiKObReUxUzYaMdt2wmTBg / FmNXndgLRbNvL7ifsLfMw6iQ =
quelle
deflate
Sprache bereitstellen , da dies nur wie eine Base64-Zeichenfolge aussiehtBrainf ***,
656652605 BytesDie Schleife am Anfang leitet das Band an
Dann gibt der Rest des Codes diese Zeichen aus.
(-47 Bytes dank Orthoplex)
quelle
T-SQL, 244 Bytes
Golf gespielt:
Ungolfed:
Probieren Sie es online ungolfed version
quelle