Einführung
Am 26. August 2017 Floyd Mayweather Jr. wird stellen Conor McGregor in einem Boxkampf.
Beide Teilnehmer erhalten die phänomenale Summe von 100 Millionen Dollar!
Leider haben wir das Geld noch nicht, aber wir können bereits die große Aktentasche vorbereiten, die alle Banknoten enthalten wird.
_________________________
| |
|=======================================|
| $ $$$$$ $$$$$ $ $ |
| $ $ $ $ $ $ $$$ $$$ |
| $ $ $ $ $ $ $$$ $ |
| $ $$$$$ $$$$$ $ $ |
|_______________________________________|
Die Aktentasche ist aus _
, |
, =
und $
.
Es hat eine Breite von 41 Zeichen (ohne Berücksichtigung der Zeilenumbrüche) und eine Höhe von 6 Zeichen (+2 für das Handle).
Herausforderung
Wenn Sie keine Eingabe machen, schreiben Sie ein vollständiges Programm, um einen 2D-Aktenkoffer auszugeben (siehe oben).
Ergebnis
Das ist Code-Golf , also gewinnt die kürzeste Lösung (in Bytes).
Antworten:
Bubblegum, 55 Bytes
Wahrscheinlich ist es möglich, Header zu entfernen, aber ich bin nicht so gut wie Dennis!
Probieren Sie es online!
quelle
Jelly ,
9275 BytesProbieren Sie es online!
Wie?
Schritt 1. Erstellen Sie eine Liste der Zeilen in der rechten Hälfte eines leeren Aktenkoffers und ignorieren Sie nachfolgende Leerzeichen:
Schritt 2: Verwandle das in eine leere Aktentasche:
Schritt 3: Zeigen Sie mir das Geld!
quelle
JavaScript (ES6),
187184 BytesWie?
Die Ausgabe wird anhand dieser 16 eindeutigen Muster erstellt:
Demo
Code-Snippet anzeigen
quelle
05AB1E , 80 Bytes
Probieren Sie es online!
Erläuterung
Die Grundzüge der Aktentasche:
05AB1E , 41 Bytes
Probieren Sie es online!
Erklärung der Untererklärung (erster Teil):
Ich habe das Gesamtdesign konvertiert, indem ich das Design in zwei
5
Hälften geschnitten , alle Zeichen durch 2-6 ersetzt und es schließlich in Basis 255 konvertiert und die Form unter Verwendung eines Trennzeichens für Zeilenumbrüche rekonstruiert habe.Ist die Zahl, die in Basis 255 ausgedrückt wird, und die Basis 6-Konvertierung davon ist ...
Wenn wir das dann auf fünf aufteilen, spiegeln und durch Zeilenumbrüche verbinden, erhalten wir ...
Erklärung zur Untererklärung (Teil 2):
Beginnen Sie zu sehen, wohin das führt? Als nächstes komprimiere ich das innere Muster als Base-255-String:
Welches ist:
In Binär umwandeln:
Ersetzen Sie für jedes dieser Zeichen ein Leerzeichen durch das nächste Zeichen, und zwar iterativ:
Schließlich ersetzen Sie die Zeichen durch das, was sie sein sollen.
Für den Verlust:
Durch Komprimieren als zwei separate Muster spare ich 20 Bytes ein:
Welches ist:
Umgerechnet auf Basis 10:
92 Bytes plus die Transliteration, was ungefähr 105 ergibt.
quelle
SOGL ,
5857 BytesErläuterung:
Probieren Sie es hier aus!
54 Bytes (im Wettbewerb? )
Der hier verwendete Befehl ist
╥
- palendromize, der nur für Zeichenfolgen funktioniert, aber auch für Arrays dokumentiert wurde . (Derzeit ist es nur im Online-Interpreter implementiert.)Probieren Sie es hier aus!
quelle
PHP, 117 Bytes
Ich bin traurig, dass nichts kürzer ist als der träge Ansatz - gzip den String und base64-encodiere ihn:
Benutzerdefinierte Komprimierung: 188 Byte
168 164 159 152151 Bytes mit einer Adaption von officialaimms Idee :Die Linien können als Bitmap zwischen einem Begrenzungszeichen (Leerzeichen für die ersten beiden, Pipe danach) mit Leerzeichen als
0
und einem anderen Zeichen als gesehen werden1
.Das Invertieren der Zeilen 3 und 8 gab ihnen einen Wert
0
, so dass ich alle Werte um 6 Bits verschieben konnte.Das Array enthält die Bitmaps (konvertiert in Basis 34; aber nur 7 Werte - das 8. Element wird weggelassen, ein leeres Element wird ebenfalls ausgewertet
0
). Basis 35 würde auch funktionieren; Die Basis 33 hat jedoch längere Werte, und die Basis 36 würde einen weiteren angegebenen Wert benötigen.Die Zeichenfolge enthält die Begrenzung
0
und die1
Zeichen in dieser Reihenfolge für jede Zeile (wobei das letzte Zeichen weggelassen wird, da für die Zeilen 3 und 8 kein1
Zeichen erforderlich ist und kein Bit gesetzt ist).Benutzerdefinierte Komprimierung von Jörg,
159156 Bytes :quelle
Jelly , 114 Bytes
Probieren Sie es online!
quelle
Braingolf , 267 Bytes
Probieren Sie es online!
So golfen ...
quelle
/// 155 Bytes
Probieren Sie es online!
Ich liebe es, wenn /// mithalten kann.
Erläuterung:
Dies funktioniert, indem Sie allgemeine Ersetzungen wie
$$$$$
definieren und dann Meta-Ersetzungen definieren, die die ursprünglichen Ersetzungen enthalten.Ausführlicher:
Erstens ist das einzige Merkmal von /// die
/pattern/replacement/
Syntax und die Fähigkeit, Backslashes zu verwenden, um andere Backslashes und Forward-Slashes zu umgehen. Diese Information ist wichtig für die Erklärung.Das erste Muster / der erste Ersatz im Code dient ausschließlich Golfzwecken (und wird hier beschrieben ). Sie ersetzt
~
mit//
, so dass die resultierende Code sieht wie folgt aus :Dann werden einige grundlegende Ersetzungen vorgenommen. Einige stützen sich auf andere (Meta-Ersetzungen), aber die Ersetzungstabelle sieht folgendermaßen aus (Code in
`
s):Die Meta-Ersetzungen hier sind Dinge wie
/&/%$$/
. Dabei wird die bereits vorhandene Ersetzung$$$
verwendet, um eine neue Ersetzung zu definieren$$$$$
.Dann kommen die sehr großen Ersetzungen. Der erste ersetzt
9
mit$ $ $ $ $ $
und der zweite ersetzt8
mit:Beachten Sie die nachstehenden Leerzeichen.
Dann werden alle diese Ersetzungen in der folgenden Zeichenfolge verwendet:
Um die gewünschte Ausgabe zu erhalten.
quelle
Python 2 ,
221 205 197 196193 Bytesa="6ZBRS533| $"
undb="70JYF0U7|"
Probieren Sie es online!
Erläuterung:
Jede Zeile hat eine generische Form von
pup
wobeip
ein Begrenzungszeichen und u eine Zeichenfolge mit zwei eindeutigen Zeichen (für jede Zeile) ist, die durch 1 und 0 dargestellt werden können. Beispiel: Zeile 5 ist:| $ $ $ $ $ $ $$$ $$$ |
Es hat | als Grenzzeichen und die mittlere Zeichenfolge enthält nur
und
$
. Die mittlere Zeichenfolge kann dargestellt werden durch:111011101101110110111011000111000111111
Jetzt kann diese Binärzeichenfolge durch eine Zahl mit 36 Basen dargestellt werden:
6JNFT2RJ
Wir können alle Zeilen durch eine definitive Zeichenfolge zusammen mit der Zeichenfolge mit 36 Basen, dem Begrenzungszeichen und den in der mittleren Zeichenfolge verwendeten Zeichen wie folgt darstellen:
Wir können also die Base-36-Zeichenkette (nachdem wir sie aus der endgültigen Zeichenkette extrahiert haben) in eine binäre Zeichenkette dekomprimieren, 1 und 0 durch die Zeichen (die auch aus der endgültigen Zeichenkette stammen) ersetzen und an beiden Enden mit Begrenzungszeichen kleben . Somit wird die erforderliche Zeichenfolge erhalten.
quelle
C
415402397 BytesProbieren Sie es online!
quelle
Retina ,
140137129 Bytes-3 Bytes dank @Neil
Probieren Sie es online!
quelle
1
Sie nicht$*<space>
direkt schreiben, da Sie das s für nichts anderes verwenden ?C (gcc) ,
388386302 BytesProbieren Sie es online!
quelle
05AB1E , 121 Byte
Probieren Sie es online!
quelle
JavaScript (ES6),
177166 BytesDie Zeichenfolge enthält eine Sammlung der anzuzeigenden Zeichen sowie die Anzahl der Wiederholungen. Wenn ein Zeichen nicht wiederholt wird, kann die Anzahl weggelassen werden.
Wiederholte Stringläufe werden durch Speichern in den Variablen
r
und optimierts
.Snippet:
quelle
Python 2 , 135 Bytes
Probieren Sie es online!
quelle
Holzkohle , 52 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Drucken Sie die linke Hälfte der Aktentasche.
Bereiten Sie den Cursor so vor, dass die komprimierte Zeichenfolge direkt nach dem Reflektieren gedruckt werden kann. (Wenn Sie die Abwärtsbewegung nach der Reflektion oder vor der komprimierten Zeichenfolge platzieren, ändert sich ihre Bedeutung.)
Überlege, um die Aktentasche zu vervollständigen.
Gibt den Betrag als komprimierte Zeichenfolge aus. (Leider war dies der kürzeste Ansatz, da sonst
M
zu viele Bytes verbraucht werden.)quelle