Adam West ist verstorben, und ich möchte seine Erinnerung hier auf PPCG ehren, obwohl ich bezweifle, dass er von unserer Existenz wusste. Während es viele, viele verschiedene Dinge gibt, für die dieser Mann bekannt ist, ist keines wichtiger als seine Rolle als der ursprüngliche Batman. Ich werde mich immer daran erinnern, dass mein Stiefvater den alten Batman und Robin bis heute beobachtet hat. Diese Herausforderung ist von Natur aus simpel und entspricht in keiner Weise dem komplizierten Mann, der Adam West war. Es ist jedoch das Beste, was ich mir einfallen lassen konnte, da dies das kultigste Bild der Karriere des Mannes ist.
Ich wollte das früher posten, aber ich habe darauf gewartet, dass sich jemand etwas Besseres einfallen lässt.
Geben Sie Folgendes aus (mit oder ohne nachfolgende Leerzeichen / Zeilenumbrüche):
* *
**** * * ****
**** ******* ****
****** ******* ******
********* ********* *********
***********************************************
*************************************************
*************************************************
*************************************************
***********************************************
***** ********************* *****
**** *** ***** *** ****
** * *** * **
Dies ist Code-Golf , die niedrigste Byte-Anzahl gewinnt.
quelle
Antworten:
Jelly , 44 Bytes
Probieren Sie es online!
Wie es funktioniert
Dies ist ein numerisches Literal. Alle Zeichen werden in Jellys Codepage durch ihre 1-basierten Indizes ersetzt. Das Ergebnis wird als bijektive Basis-250-Ganzzahl interpretiert und ergibt
Als nächstes
b25
konvertieren Sie diese ganze Zahl zur Basis 25 undo99
ersetzen 0 durch 99 , was ergibtJx$
Ersetzt die j- ten Basis-25-Stellen n durch n Kopien von j , was ergibtNun
ị⁾ *
Indizes in das Zeichenpaar. Die Indizierung basiert auf 1 und ist modular aufgebaut, sodass ungerade Zahlen durch Leerzeichen und gerade durch Sternchen ersetzt werden. Dies ergibts25
Zerhackt das Ergebnis in Stücke mit einer Länge von 25 . Wenn wir jeden Block in eine eigene Zeile schreiben, erhalten wirDas Bounce- Atom
ŒB
palindromisiert jeden Chunk, indem es eine umgedrehte Kopie ohne das erste Zeichen anfügtZum Schluss werden
Y
die eigentlichen Zeilenvorschübe vorgestellt.quelle
“QƤḣọḲ£¿ẆịµñẒṢƊ¬ƒỤ2ỴÐ,ịṁ&Ḅ<ḋsḳn.⁷ṛḃṡ⁾6bḋeṁ’ṃ⁾ *s25ŒBY
war mit 53 Bytes kurz genug ...Wordfuck ,
57612686 BytesIch denke, die Verwendung seines Namens als Quellcode bringt Adam West eine Ehre ein.
Probieren Sie es online! (transpilierter Brainfuck)
Adam West singt (danke @carusocomputing)
quelle
Python,
530529528524 Bytesquelle
B.pop(0)
etwas nervig finde . Warum nicht umkehren,B
damit Sie die viel effizientere (und kürzere) verwenden könnenB.pop()
? Daspop(0)
muss alle verbleibenden Listenelemente um einen Platz nach unten verschieben. Sicher, es passiert mit C-Geschwindigkeit, aber es ist immer noch weniger effizient, als vom Ende der Saite zu springen.POP
,BIFF
,POW
,OOF
machte mich ausspucken , was ich auf meinem Monitor trank. Danke lol. +1.JavaScript (ES6),
148146 BytesDemo
Code-Snippet anzeigen
quelle
Python,
149142 Bytes7 Bytes gespart dank @ PM2Ring
quelle
x=''.join(s*int(k,36)for s,k in zip(' *'*3,l))
MATL ,
6159 BytesProbieren Sie es online!
Wie es funktioniert
Hierbei werden die folgenden Standardtechniken verwendet:
1
bis an11
, sodass die Folge der Lauflängen durch Basiskonvertierung von Basis11
zu Basis komprimiert wird94
(druckbare ASCII-Zeichen mit Ausnahme von einfachen Anführungszeichen, die maskiert werden müssten).quelle
[1:12 20 24 99]
, was die Komprimierung erschwert. Mein bester Versuch ist bei 60 BytesY|
? Ich kenne nicht genug MATL atm, um zu testen, ob das tatsächlich kürzer ist ...[1:24 99]
ich ein Byte entfernt . Wenn ich[0:24]
(Basis 25) Ich weiß nicht , wie zu drehen0
in99
in wenigen BytesY|
funktioniert in MATL / Octave nicht so wie in Jelly / Python. In letzterem0 or 99
ergibt sich 99 ...05AB1E , 47 Bytes
Probieren Sie es online!
quelle
replace 99 trick
von ihm (4 Bytes über den direkten Weg gespeichert). Immer noch auf der Suche nach einem besseren Weg..∞
anstelle von€û»
(Spiegel verbinden implizit Listen in Zeilenumbrüchen zuerst in der Vorgängerversion, bevor der Spiegel angewendet wird). Ich habe auch versucht , zu verwenden ,₂в
statt25в
, aber leider ist die komprimierte ganze Zahl ist dann 1 Byte mehr als gut, so er nichts sparen:•2Ø°×á[1∊Œ)’˜Àå<тIÞ‡p5ÉQ•₂в
.vim,
168156 BytesDies setzt eine Unix-Umgebung voraus, z
rev
. Ich verwende eine ziemlich einfache Codierung (Anzahl, Zeichen), wobei N und A jeweils aund anhängen
*
und B die Kopie und den Rückwärtsgang ausführen.In der eigentlichen Datei werden die Einträge in Klammern durch die Literalbytes ersetzt, die sie darstellen.
<C-v>
ist 0x16,<ESC>
ist 0x1b und<CR>
ist 0x0d.Probieren Sie es online aus
quelle
:nm N a <C-v><esc>
und:nm A a*<C-v><esc>
<C-v>
in einer Datei zu speichern, als es ist, also habe ich die Roundabout-Methode verwendet, damit ich sie testen kann{ cat foo.vim; echo ':wq'; } | vim out.txt
. Ich bin mir nicht sicher, warum es mir nicht eingefallen ist, es<C-v><C-v>
gestern zu versuchen .-v
Flagge können Sie vim-Schlüsselbeschreibungen (wie<C-v>
und so weiter) verwenden<NL>
statt<NEWLINE>
?Charcoal ,
69545248 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Bearbeiten: Dank @ ASCII-only werden 4 Bytes durch Umschalten von einem separaten Flag auf das Durchlaufen von Indizes,
7 Bytes durch Verwenden desUnd weitere 4 Bytes durch Verwenden des Alphabets für die Lauflängencodierung gespeichert. Weitere 2 Bytes gespeichert, da⸿
Zeichens (undokumentiert?)AtIndex
das Modulo automatisch übernommen wird. Weitere 4 Bytes gespeichert, daMap
automatisch eine Indexvariable erstellt wird. Erläuterung:Das äußere
Map
gibt ein Array zurück.Print
Bewältigt dies, indem jedes Element in einer eigenen Zeile gedruckt wird, so dass es nicht manuellJoin
mit erstellt werden muss\n
.Die Zeichenfolge codiert alle halben Zeilen der Ausgabe. Abwechselnde Buchstaben beziehen sich auf die Anzahl von
*
s und Leerzeichen (a=0
wird verwendet, um eine Zeile zu behandeln, die mit einem Leerzeichen beginnt). Das Leerzeichen ist eine bequeme Wahl des Begrenzungszeichens, lässt sich aber auch gut komprimieren (x komprimiert sich auch auf insgesamt 55 Byte). Jede Zeile wird separat verarbeitet. (Hinweis: Der Deverbosifier kann das Trennzeichen zwischen einer komprimierten und einer nicht komprimierten Zeichenfolge nicht entfernen, da der Code sonst,
zur besseren Lesbarkeit eine haben würde .)Durchlaufen Sie jeden Buchstaben und erweitern Sie ihn auf die entsprechende Anzahl von
*
s oder Leerzeichen. Die Variablem
ist dabei der innere SchleifenindexMap
, währendl
der Buchstabe enthalten ist. Das Ergebnis wird dann unterJoin
Verwendung der vordefinierten leeren Zeichenfolge in eine einzelne Zeichenfolge umgewandeltw
.Sobald alle Zeilen gedruckt sind, spiegeln Sie alles auf der linken Seite wider und überlappen die mittlere Spalte.
Ich habe versucht, die Zeilenumbrüche, Leerzeichen und Sterne in einer Schleife zu behandeln, aber es hat tatsächlich zwei weitere Bytes in dieser Weise gedauert:
quelle
Clojure,
833437 BytesFast per Definition wird Clojure niemals einen Preis für Kürze gewinnen, aber als ich JEDE VERDUNKELTE WOCHE auf die ZWEI (count 'em - TWO ) Episoden von Batman (gleiche Bat-Zeit, gleicher Bat-Kanal!) Gespannt war, war klar, dass es sie gibt keine Zeit zu verlieren!
Schnell, Robin - zum Bat-REPL !!!
Ungolf-Version:
RIP Adam West. Egal wie lächerlich diese Shows waren, es grüßen euch diejenigen von uns, die Kinder waren.
quelle
C (gcc) , 191 Bytes
Probieren Sie es online!
quelle
Verschiedene Lösungen, die alle die Lauflängencodierung verwenden, mit einer Vielzahl von Techniken zum Codieren der RLE-Daten.
Python 3,
125121 BytesDiese Version verwendet eine
bytes
Zeichenfolge zum Speichern der Daten.Sei
s
eine Kette von Sternen oder Räumen. Dann wird die Byte -n
Codierungs
gegeben ist durchPython 2,
133126 BytesDiese Version verwendet alphabetische Codierung. Der Buchstabenwert bestimmt die Länge der Ausgabezeichenfolge. Die Groß- und Kleinschreibung des Buchstabens bestimmt, ob er aus Leerzeichen oder Sternen besteht.
Meine ursprüngliche 133-Byte-Python-2-Lösung.
In dieser Version werden Zeichenfolgen mit der Länge Null verwendet, sodass problemlos zwischen Stern- und Leerzeichenfolgen gewechselt werden kann.
Nur zum Spaß, hier ist ein Einzeiler mit der alphabetischen Codierung.
Python 2, 148 Bytes
Für noch mehr Spaß gibt es in Conways Game of Life ein Muster , das eine Version des Batman-Logos generiert. Ich musste jede Zeile verdoppeln, um das Seitenverhältnis in etwa auf dem Niveau der Textversion zu halten. Dieses Muster ist nicht wirklich das Logo berechnen (obwohl es ist möglich , Berechnungen im Leben zu tun - es ist Turing-complete), es Replays es nur aus dem Gedächtnis Loops, so dass ich glaube , ich kann es nicht als Code Golf - Eintrag schreiben (obwohl Ich habe es mit einem Python-Skript erstellt, das ich vor ein paar Jahren geschrieben habe. ;)
Es ist in einem ziemlich standardmäßigen RLE-Format codiert, das die meisten Life-Engines laden können. Wenn Sie kein GoL-Programm (z. B. Golly ) haben, können Sie es mit dieser Online-Life-Engine , die Life-RLE-Dateien importieren kann, online in Aktion anzeigen . Hier ist eine PNG-Version dieses Lebensmusters . Einige Lebensprogramme (einschließlich Golly) können Lebensmuster aus PNGs und verschiedenen anderen Bilddateiformaten laden.
quelle
T-SQL,
283 276222 BytesImplementieren der GZIP-Komprimierung der ursprünglichen Batman-Zeichenfolge mithilfe der hier angegebenen Methode . Dies funktioniert nur in SQL 2016 und höher.
Verwenden Sie für frühere SQL-Versionen meine frühere Methode ( 276 Byte ):
Grundsätzlich codiere ich manuell eine riesige Zeichenfolge, die bestimmt, was als Nächstes gedruckt werden soll, und zwar mithilfe der folgenden Methode:
#7
wird ersetzt durch+REPLICATE('*',7)
$4
wird ersetzt durch+SPACE(4)
&
wird ersetzt durch+CHAR(13)
Nach dem Ersetzen sieht die vollständige 958-Zeichenfolge wie folgt aus (mit Zeilenumbrüchen in jeder Zeile des Batman-Symbols:
Was als dynamisches SQL ausgeführt wird und die folgende Ausgabe erzeugt:
quelle
PHP , 137 Bytes
Probieren Sie es online!
PHP , 177 Bytes
Probieren Sie es online!
PHP , 179 Bytes
Probieren Sie es online!
quelle
Java,
296214 BytesGolf gespielt:
Ungolfed:
quelle
";1I1074:151:4054<7<4036<7<6029999901_10a10a10a01_0257E570447345437407271636172"
für Daten verwendet werden undfor(char a:x){a=(int)a-48; [...]
addiert im Grunde genommen 48 zu jeder der Zahlen und konvertiert sie in ihr ASCII-Zeichen-Äquivalent. Ich glaube, das spart Ihnen 70-80 Bytes. Ich glaube auch, dass das Hardcodieren der Daten in das Lamba auch die Bytes reduziert.boolean b=false;
kann seinboolean b=1<0
, oder noch besser können Sie ein verwendenint
und auch kombinieren , um die Erklärung füri
auf der gleichen Linie;).i
in Ihrer for-Schleife verwenden, denke ich, dass Siefor(int i=0;i++<a-48;)
alsfor
-head verwenden können.Bubblegum , 75
xxd dump:
Probieren Sie es online aus .
quelle
Kaffeeskript (282 Bytes)
Erklärung (mit plain-ol ES6)
quelle
V , 102 Bytes
Probieren Sie es online!
Hexdump:
Dies verwendet Lauflängencodierung, um die folgende Batman-Hälfte zu generieren:
Anschließend wird jede Zeile umgekehrt und dupliziert.
quelle
Python 2 , 134 Bytes
Probieren Sie es online!
Die Lauflänge codiert jede Zeile von der linken Hälfte in Basis 36. Spiegelt sie, um die vollständige Zeile zu erstellen, die gedruckt wird. Die führenden Leerzeichen werden nicht codiert. Stattdessen ist die linke Hälfte auf Länge 25 gepolstert.
quelle
Mathematica 151 Bytes
Billig und unkreativ. Die Saite ist nur aus dem eingebauten
Compress
Befehl, der für die erforderliche Ausgabe verwendet wird.Aktualisieren:
Ich denke, ich kann es mit den integrierten
ImportString
\ExportString
Funktionen besser machen, aber ich kann die resultierenden Zeichenfolgen nichtExportString
richtig kopieren und einfügen . Z.BIch kann nicht scheinen, die Textausgabe von der zweiten Zeile zu kopieren, um die
%
in der dritten Zeile zu ersetzen .quelle
Bash ,
407322 BytesProbieren Sie es online!
Wirklich schrecklich, brauche mehr Zeit oder helfe beim Golfen. es generiert die Ausgabe mit 0 und 1 und transliteriert am Ende. In hexadezimalen Ziffern codiert die Anzahl von 0 und 1, wobei darauf zu achten ist, dass die letzte Ziffer 0 für die ersten beiden Zeilen als Flag für die Ausgabe der mittleren Spalte verwendet wird. Verwendet printf Pressision, um entweder eine Ziffer oder eine Zeichenfolge auszugeben, um 0 und 1 auszugeben. Denken Sie, das
%.$[0x${X}]C
Muster könnte zum Golfen verwendet werden.quelle
Python 3,
232197183164 BytesNoch eine Python-Antwort. Kein langweiliger Komprimierungscode. Aufregender Kompressionscode.
Ich benutze die magische Zahl 35, weil auf diese Weise keine Steuerzeichen, Leerzeichen oder Dinge auftreten, die entkommen müssten. Schade, dass ich die Räume und Sterne getrennt verarbeiten muss, das kostet mich ein bisschen.
Ungolfed:
quelle
print
Anruf auf dieselbe Leitung wie das setzenfor
. 2 Wenn Sie einebytes
Zeichenfolge verwenden, können Sie dieseord
Aufrufe entfernen. 3 Sie können die ersetzen,range
indem Sie ein Paar Iteratoren überzippen. Hier ist ein Generator, der beide diese Ideen kombiniert:((u-35)*" "+(v-35)*"*"for u,v in zip(*[iter(s)]*2))
. Diese Änderungen werden IhrenPowerShell, 305 Byte,
307 Byte,316 ByteVielleicht kann mir jemand anderes helfen, es weiter zu verkürzen, obwohl ich nicht herausfinden kann, wie, es sei denn, es gibt eine präzisere Möglichkeit, einen benutzerdefinierten Typ-Beschleuniger zu definieren.
Edit: Verkürzte Version (danke @root). Codierte Zeichenfolgen (Pre-Base64-Codierung) können um acht Array-Positionen gekürzt und der Bereich somit verringert werden. Ich bin nicht sicher, warum StreamWriter dieses Aufblähen in MemoryStream einführt. Einsicht in das zugrunde liegende Verhalten ist erwünscht.
Ungolfed:
Kompressionscode:
quelle
[IO.StreamReader]::new(([IO.Compression.GZipStream]::new([IO.MemoryStream]::new(([Convert]::FromBase64String('H4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbuHBUsBqAgAA')),0,102),[IO.Compression.CompressionMode]::Decompress))).ReadToEnd()
$ms.ToArray()
beide 0. Sind sie notwendig?('225','193','82','192','106','2','0','0')
können entfernt werden, um sie zu erstellenH4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbg==
. Ich verstehe nicht, woher sie kommen.Perl 5, 168 Bytes
Beachten Sie das nachstehende Leerzeichen nur am Ende der ersten Zeile. Benötigt
-M5.01
, was kostenlos ist.Kann wohl noch ein bisschen mehr golfen werden.
quelle
LaTeX, 314 Bytes
Die ungolfed version mit erklärungen:
quelle
C # (.NET Core) ,
342 333 328 185175 ByteProbieren Sie es online!
Viele Bytes werden gespeichert, nachdem der Ansatz geändert wurde. Aus der Zeichnung als 2D-Array habe ich die RLE-Codierung nach Dateien berechnet:
Ungerade Indizes stehen für
s und gerade Indizes stehen für
*
s. Dann habe ich jede Zahl durch eine druckbare ASCII-Darstellung ersetzt (wobei das '#' als 1 verwendet wurde) und Folgendes erhalten:Der Algorithmus berechnet also nur die Zeichnung, indem er diese Zeichenfolge dekomprimiert und an den richtigen Stellen neue Zeilen hinzufügt.
quelle
l
Variable festlegen , sondern müssen sie direkt in der Schleife verwenden..ToString(i, 2)
->.ToString(i,2)
dh das Leerzeichen entfernen.1e10
für diese Zahlen Bytes mit Dezimal- oder wissenschaftlichen ( ) Darstellungen speichern ? Diese Herausforderung ist hier tatsächlich hilfreich.PowerShell ,
129128 ByteProbieren Sie es online!
Ungolfed:
Ausgabe:
Hauptidee ist sehr einfach
Die Emblem-Codierung:
Dekodierung (dieses Skript):
Length
MalenEinige kluge Dinge
½
ums*t
(73 Sternchen, 0 Leerzeichen, 74 Sternchen).Extra: Scipt zur Codierung des Emblems
quelle
Mathematica, 271 Bytes
quelle
Braingolf ,
590580579577428423312 Bytes-111 Bytes, weil LeakyNun ein Golfgott ist
Probieren Sie es online!
Braingolf ist nicht gut in ASCII-Kunst, aber verdammt, ich habe es versucht.
Auf keinen Fall erkläre ich diesen Clusterf ** k
quelle
/// ,
171166 Bytes5 Bytes gespart, weil ich
\r\n
in der Quelle verwendet habe, lol.Probieren Sie es online!
Komprimiert durch die Verwendung aufeinanderfolgender Iterationen des Ersetzens der "sparsamsten" Teilzeichenfolgen durch ein einzelnes Zeichen. Dies ist nahezu optimal, obwohl eines von zwei Dingen der Fall sein könnte:
quelle