Die Herausforderung ist eigentlich extrem einfach. Wählen Sie 5 verschiedene Buchstaben (Sie können einfach die 5 auswählen, mit denen Sie den kürzesten Code erhalten, wenn Sie möchten) und geben Sie sie auf der Konsole aus. Der Clou ist jedoch, dass sie aus der folgenden Liste stammen müssen:
AAA BBBB CCCC DDDD EEEEE FFFFF GGG H H
A A B B C D D E F G H H
AAAAA BBBB C D D EEEE FFFF G GG HHHHH
A A B B C D D E F G G H H
A A BBBB CCCC DDDD EEEEE F GGG H H
IIIII J K K L M M N N OOO
I J K K L MM MM NN N O O
I J KKK L M M M N N N O O
I J J K K L M M N NN O O
IIIII JJJ K K LLLLL M M N N OOO
PPPP QQQ RRRR SSSS TTTTT U U V V W W
P P Q Q R R S T U U V V W W
PPPP Q Q RRRR SSS T U U V V W W
P Q QQ R R S T U U V V W W W
P QQQQ R R SSSS T UUU V W W
X X Y Y ZZZZZ
X X Y Y Z
X Y Z
X X Y Z
X X Y ZZZZZ
Zusätzliche Regeln:
- 5 gleiche Buchstaben sind nicht erlaubt, keine Wiederholungswahlen.
- Jeder Buchstabe muss sein eigenes Großbuchstaben als ASCII-Zeichen verwenden, um ihn zu zeichnen.
- Jede Buchstabenausgabe muss in der "gleichen Zeile" stehen und 5 Leerzeichen zwischen den Buchstaben enthalten.
- Sie können 5 beliebige Buchstaben auswählen. Auf diese Weise können Sie Code wiederverwenden und die Anzahl der Bytes verringern. Es ist Teil der Herausforderung, herauszufinden, mit welchen Buchstaben Sie dies am effizientesten tun können.
- Leerzeichen sind akzeptabel.
- Eine einzelne abschließende Zeile ist zulässig, jedoch nicht mehr als eine abschließende Zeile.
- Dies ist Code-Golf, die niedrigste Anzahl an Bytes gewinnt.
Beispiele:
ABCDE
AAA BBBB CCCC DDDD EEEEE
A A B B C D D E
AAAAA BBBB C D D EEEE
A A B B C D D E
A A BBBB CCCC DDDD EEEEE
EFLIP
EEEEE FFFFF L IIIII PPPP
E F L I P P
EEEE FFFF L I PPPP
E F L I P
EEEEE F LLLLL IIIII P
VERRÜCKT
CCCC RRRR AAA ZZZZZ Y Y
C R R A A Z Y Y
C RRRR AAAAA Z Y
C R R A A Z Y
CCCC R R A A ZZZZZ Y
Haben Sie keine Angst, jedes Mal mehr als eine Antwort mit unterschiedlichen Buchstaben oder Strategien einzureichen. Dies kann auf verschiedene Arten erreicht werden.
code-golf
ascii-art
kolmogorov-complexity
Magische Kraken-Urne
quelle
quelle
J
s.\n
, werde ich dies zulassen.Antworten:
Jelly , 41 Bytes
LICTE
TryItOnline!
Idee
Verwenden Sie eine Lauflängendekodierung mit Buchstaben, deren Mitte so ähnlich wie möglich ist, wobei nur eine Lauflänge für jeden "Pixelwert" pro Zeile und Buchstabe verwendet wird.
Setzen Sie einen flachen Start wie "L", um unterschiedliche Lauflängendecodierungswerte für die Zeilen zu vermeiden.
Platzieren Sie den einen anderen Buchstaben (konnte 5 nicht finden) der drei mittleren Reihen am Ende, damit der kleinste Unterschied rechnerisch addiert werden kann.
Ausgabe gewünscht; die Lauflängen; und diese von Basis 11 konvertiert:
Die drei Werte
399633415
,431646160
und1179122455
in der Basis250
sind als Jelly - Codepage Indizes dannðƁ ƥ
,ȷɓSɠ
undJrŀṘ
die verwendet werden , um die Lauflängeninformation zu verkapseln.Der Code
quelle
Kohle ,
5149 Bytes (ECXKI)Ausgänge
Probieren Sie es online!
Zeichnet mit vertikal symmetrischen Zeichen die oberen Hälften und reflektiert sie dann. Die meisten davon verwenden Polygon (
G
) und PolygonHollow (GH
), um eine Reihe von verbundenen Liniensegmenten mit einem bestimmten Zeichen zu zeichnen.I
kann einfacher mit MultiPrint (P
) durchgeführt werden, wobeiT
als Richtung verwendet wird.Hinweis: PolygonHollow zeichnet nur die angegebenen Segmente, ohne das Polygon zu vervollständigen oder zu füllen. Das Polygon wird vervollständigt und ausgefüllt (nicht das, was wir wollen), wenn das Polygon mit einer einfachen Linie in einer der acht Himmelsrichtungen oder zwischen den Himmelsrichtungen vervollständigt werden kann. Ansonsten verhält es sich wie PolygonHollow, mit einer Einsparung von einem Byte.
Die Reihenfolge der Zeichen wurde so gewählt, dass nur horizontale Bewegungen vom Endpunkt eines Zeichens zum Anfang des nächsten Zeichens erforderlich sind. So verfährt der Cursor:
quelle
GH
den Dokumenten hinzufügen ]PowerShell v2 +,
138128114112106105 Byte (LICTD)Die Idee ist, die Abstände zwischen den Buchstaben zu maximieren, damit wir wiederholte Komprimierungen erhalten können.
Leiht den Deduplizierungstrick für die mittlere Zeile aus Florents Antwort . Dank Ben Owen konnten 6 Byte durch die Verwendung der String-Multiplikation für die mittleren drei Zeilen und dank Matt ein zusätzliches Byte eingespart werden .
Die Ausgabe ist wie folgt bei 227 Bytes für eine 53,7% ige Reduzierung -
quelle
$("L11 I1 C11 T1 D D`n"*3)
statt der mittleren 3 ZeilenJavaScript,
110 bis109 Byte (CLOUD)Code-Snippet anzeigen
Die Ausgabe beträgt 227 Bytes:
quelle
ES6 (Javascript),
194181 Bytes (IGOLF / ANY)Dieser ist lang und (noch) nicht wirklich optimiert. Er kann jedoch geändert werden, um eine bestimmte Nachricht zu drucken, indem nur die Bitmap-Daten geändert werden.
BEARBEITEN: Inneres Verkleinern durch Map ersetzt , Bitverschiebung zum Auffüllen verwenden
Golf gespielt
Demo
Theorie
Nimm einen Brief:
konvertiere es in eine binäre Matrix (Bitmap)
Machen Sie dasselbe für die anderen 4 Buchstaben, scannen Sie eine Zeile, indem Sie jeweils die "oberen" 5 Bits entfernen
11111 01110 01110 10000 11111
in eine hexadezimale Zeichenfolge konvertieren (sollte base36 oder sogar druckbares ASCII verwenden)
0x1f73a1f
Wenden Sie den gleichen Algorithmus auf andere 4 Zeilen an, um die Bitmap zu erhalten.
In umgekehrter Reihenfolge rendern.
quelle
[32979487,4736528,4834846,4769296,32979952]
ist kürzer als die hexadezimale Darstellung/(1|0)/g
durch/\d/g
ein paar Bytes zu speichern. Könnte\n
auch durch eine aktuelle neue Zeile ersetzt werden.PHP,
1071041029486 BytesOk, ich bin zuversichtlich, dass ich mit dieser Methode jetzt die kleinstmögliche Quelle habe. Ich habe ein Skript geschrieben, um jede mögliche Kombination von fünf Buchstaben zu generieren und dann zu gzipen. Es gibt zwei Lösungen, die für die kürzeste Komprimierung passen - LODIC und LDOIC. Ich gehe mit dem ersteren, weil es mehr Spaß macht, es zu sagen.
Quelle:
Ausgabe:
quelle
'
s löschen: Die Zeichenfolge wird als Konstante mit einem Wert von sich selbst behandelt.05AB1E , 44 Bytes
Dies war ein Spaß.
Ich habe das Gefühl, ich muss zurückkommen und es noch einmal versuchen, wenn ich Zeit habe.
Verwendet CP-1252- Codierung.
Inspiriert von der Antwort von carusocomputing .
ECOIH
Probieren Sie es online!
Erläuterung
‘ÓÑOIHH‘
drückt die Saite"ECOOIHH"
.SðýJ3×S
Verbindet den String durch Leerzeichen, wiederholt ihn dreimal und konvertiert ihn in eine Liste.Die resultierende Liste ist
['E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H', 'E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H', 'E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H']
.•Td<UÕ‘áÓ?¢tWvkÔÚ•
drückt die Nummer564631055513119191317171314619131717500
.S)ø
Zippt die Liste und die Nummer zusammen.ü×J
Führt eine paarweise String-Wiederholung durch und verbindet sie miteinander.Das Ergebnis ist die Zeichenfolge
EEEEE CCCC OOO IIIII H HE C O O I H HEEEE C O O I HHHHH
.3äû»
teilt das in 3 Teile auf, fügt das erste und zweite Stück in umgekehrter Reihenfolge hinzu und fügt sich durch Zeilenumbrüche zusammen.quelle
•Td<UÕ‘áÓ?¢tWvkÔÚ•
drückt die Zahl564631055513119191317171314619131717500
", denn warum sollte es nicht ...JavaScript (ES6), 96 Byte (DIOCL)
Die Idee hier ist, nicht nur die mittleren drei Zeilen identisch zu machen, sondern auch die erste Zeile fast identisch mit der letzten. Da es nur 4 Buchstaben gibt, die perfekt zu dieser Beschreibung passen
CDIO
,L
ist dies die nächstbeste Option, da nur 4 zusätzliche Zeichen am Ende der Zeichenfolge erforderlich sind.Wie bei Florents Antwort ist dies ein Ausschnitt, der das Ergebnis zurückgibt. Fügen Sie 3 Bytes hinzu, wenn es eine Funktion sein muss.
Testschnipsel
Code-Snippet anzeigen
quelle
D
erste einfügen .C
vorbei an denI
undO
auchI
sofort nach dem habenC
, obwohl das interessanterweise meine Batch-Lösung aus dem gleichen Grund verbessert.Bash + Coreutils mit Figlet, 55440 Lösungen,
112106 BytesAusgabe:
Hey, wir haben bereits ein Programm für ASCII-Kunst! Die Banner- Schriftart erledigt fast den Job, außer dass sie 7x7 Buchstaben ausgibt. Hmm, lass uns einfach die 3. und 5. Spalte und die 2. und 5. Zeile entfernen und sehen, was es gibt ...
Es stellt sich heraus, dass viele Buchstaben auf die erforderliche Weise ausgegeben werden, nämlich BDEFHJLPTU Z.
Es genügt, die Argumente des ersten gesetzten Befehls durch eine beliebige Kombination dieser Buchstaben zu ersetzen, um immer noch ein korrektes Ergebnis zu erhalten! Dies ergibt also 11 * 10 * 9 * 8 * 7 = 55440 Lösungen mit einer Länge von jeweils 106 Bytes.
quelle
05AB1E ,
102908969 Byte (EOIXC)Probieren Sie es online!
Ausgabe (230 Bytes):
Erläuterung:
Die Theorie war, vertikal symmetrische Buchstaben auszuwählen, dann die ersten 3 Zeilen zu kodieren und sie zu palindromisieren. Grundsätzlich habe ich als {#} von {Letter} in 2-Byte-Paaren codiert. Ich bin sicher, es gibt einen besseren Weg, dies zu tun.
-20 bytes danke an emigna, ich werde bald im chat ein paar fragen stellen;).
quelle
•Cv¶ÉH&9;´ß{ø‰¿šq3d$µ_©Û¶«K>Ò±sÒ9ÍÊC4ÊÚîòvÅr葾)jM•34B2ð:
. Hüpfen Sie in den 05AB1E-Chat, wenn Sie Fragen zur Codierung haben.45ô
kann3ä
.A
ist nicht vertikal symmetrisch und auch nichtF
. VermutlichG
ruiniert es das, wovon Sie sprechen , wenn Sie mit der Verwendung von oder höher beginnen, oder? Außerdem wollte ich mit meiner Komprimierungsmethode Buchstaben vermeiden, die mehr als ein Vorkommen pro Zeile aufwiesen. Wenn Sie diese Lösung Golf spielen und mich schlagen möchten, würde ich das Beispiel begrüßen :).0
in derO
(mittleren Reihe, rechte Seite)•Cv¶ÉH&9;´ß{ø‰¿šq3d$µ_©Û¶«K>Ò±sÒ9ÍÊC4ÊÚúNÏŒº9¨gÚSÞ•
behebt dieO
Anzahl der gleichzeitig vorhandenen Bytes.JavaScript ES6, 168 Byte, CHAMP
Wir können aufhören, Leute zu suchen, wir haben einen
CHAMP
hierquelle
Brainf
512411 BytesBesser wiederholen:
Dieser optimiert das Band besser, indem er Setup-Zeichen für das Drucken von Zeichen opfert. Das Band in diesem sieht so aus
'C' 'E' ' ' 'F' 'I' 'L' '\n'
, als würde es die Effizienz verbessern. Ich habe mich für diese entschieden, weil ihnen Innenräume fehlen, damit sie nicht mehr als nötig zwischen Charakter und Raum hin und her wechseln müssenWenn Sie lesen möchten, was es tut:
Ausgabe:
Frühere Einreichung:
Ich entschied mich für ABCDE, weil es das Einrichten des Bandes für die Ausgabe sehr viel einfacher macht, aber die Zeit und die Zeichen, die ich verschwendet habe, um den ganzen negativen Raum innerhalb von A, B und D und die Platzierung von '' zu erreichen Die Endzeile am Ende des Bandes hat mich umgebracht, glaube ich.
Ich endete mit einem Band, das die Werte hatte
0 0 'A' 'B' 'C' 'D' 'E' ' ' \n
und dann von dort ausgegeben wurdeAusgabe:
quelle
[<]>
dreimal verwenden, um 6 Bytes zu sparen.Vim,
116 Bytes99 BytesELITC
Golfen unter 100 mit Hilfe von @DrMcMoylex.
Diese enthält nicht druckbare Zeichen, daher habe ich sie unten hinzugefügt (Vim-Stil), damit Sie sie sehen können.
TryItOnline!
Grundsätzlich wird die gleiche Lauflängendecodierung verwendet wie bei der Gelee-Antwort. Ich habe Buchstaben verwendet, bei denen ich (hoffentlich) das Obere auf dem Unteren wiederholen konnte, und die Mitten wären alle drei gleich. Sobald die Oberseiten, Unterseiten und Mitten erstellt sind, bearbeite ich die Zeichen, um sie zu korrigieren:
Ich muss dem I zwei Leerzeichen hinzufügen, da ich keine zweistelligen Zahlen zulasse (daher würde ich kein Trennzeichen benötigen. Dies führt zu einem 9-Leerzeichen-Lauf, bei dem ich 11 benötige.
quelle
Y
stattVy
,FI
statt?I<cr>
,{
stattgg
,w
stattfl
. 3) Wenn Sier
anstelle von verwendenR
, können Sie die entfernen<esc>
.MATL , 49 Bytes
Probieren Sie es online!
Dies erzeugt die Buchstaben
TIHZN
:Erläuterung
T
ist relativ einfach von Grund auf neu zu bauen.I
kann im wesentlichen alsT
Plus seiner vertikalen Reflexion erhalten werden.H
wirdI
umgesetzt.N
istZ
transponiert und vertikal reflektiert.quelle
V ,
62, 53 BytesProbieren Sie es online!
Dies gibt aus
C I D O Z
:quelle
Perl, 109 Bytes (ABCDE)
Hinweis : Dies enthält nicht druckbare Zeichen, die zur Vereinfachung des Testens hier ausgeblendet
xxd
werden.Speichert die Binärdarstellung der Buchstabenpositionen als Zahl und entpackt sie dann in eine Binärdarstellung, wobei
0
s durch Leerzeichen und1
s durch den entsprechenden Buchstaben ersetzt wird. Das Speichern der Buchstabenrepräsentationen ist recht einfach, aber das Ersetzen stellte sich als schwieriger heraus, als ich gehofft hatte. Ich bin mir sicher, dass es dafür bessere Möglichkeiten gibt, also könnte ich auch weiterhin damit spielen.Um die Datei neu zu erstellen, führen Sie den folgenden Befehl aus
xxd -r > favourite-letter.pl
, fügen Sie ihn ein und drücken Sie Ctrl+ D:Verwendungszweck
quelle
Python 2, 124 Bytes
Ähnlich wie meine andere Antwort , aber mit besseren Buchstabenauswahlmöglichkeiten. Gibt Folgendes aus:
quelle
Befunge, 120 Bytes (CKYTF)
Quelle
Ausgabe
Probieren Sie es online!
Falls es darauf ankommt, sollte ich darauf hinweisen, dass meine Ausgabe in jeder Zeile ein vorangestelltes Leerzeichen enthält. Die Regeln haben das nicht ausdrücklich verboten, also hoffe ich, dass das in Ordnung ist. Wenn nicht, betrachten Sie diesen Eintrag bitte als nicht konkurrierend.
Erläuterung
Die Buchstaben des Wortes werden als einfache Folge von 25 Ganzzahlen codiert, wobei jede Ganzzahl eine binäre Darstellung von 5 Pixeln ist. Da Sie bei Befunge eine Berechnung ausführen müssen, um eine ganze Zahl größer als 9 zu instanziieren, wurden die Buchstaben so ausgewählt, dass die Anzahl der erforderlichen Berechnungen auf ein Minimum reduziert und die Reihenfolge so festgelegt wird, dass potenzielle Wiederholungswerte dupliziert und nicht neu berechnet werden können.
Wir müssen auch den ASCII-Wert jedes Buchstabens, der um 32 versetzt ist, in einem Array speichern, das durch das Modulo 5 eines dekrementierenden Indexes indiziert wird (also 0 4 3 2 1 ...). Der Grund für das Versetzen um 32 ist, dass der Wert mit einem Pixelbit (1 oder 0) multipliziert und dann zu 32 addiert werden kann, um entweder ein Leerzeichen oder das erforderliche Zeichen zu erzeugen.
Dieses Array von Buchstabenwerten wird in den ersten 5 Bytes des Codes gespeichert, sodass ein einfacher Zugriff möglich ist. Dies wirkte sich dann auch auf die Auswahl der Buchstaben aus, da diese Werte bei der Interpretation als Codesequenz aussagekräftig sein mussten. Das ist die Reihenfolge
#&49+
. Der#
springt über den&
und der49+
drückt gerade 13 auf den Stapel, der anschließend ignoriert wird.quelle
&
, aber Ihr Programm nimmt keine Eingabe ... was ist los?Ruby,
110107102 Bytes (DOCIL)Druckt
BEARBEITEN: Einige Zeichen wurden gespeichert,
join
indem Dinge vermieden und verschoben wurdenquelle
Befunge-98 ,
10998 Bytes (FUNGE / ANY)Probieren Sie es online!
Eingabe (115 Zeichen):
Die Eingabe ist die ganzzahlige Version einer Binärzahl mit dem Format,
aaaaabbbbbb
bei demaaaaa
es sich um eine umgekehrte Zuordnung des zu druckenden Zeichens handelt (z. B. die zweite Zeile in NNN N
, also die Maske10011
) undbbbbbb
das zu druckende ASCII-Zeichen minus 32 .Ich habe auch ein befunge-98-Programm erstellt, um meine Eingaben zu erstellen:
Probieren Sie es online!
Ausgabe (255 Zeichen):
Erläuterung:
Das ist wahrscheinlich ziemlich golfen; Ich habe kaum über mögliche Reduzierungen nachgedacht.
Theoretisch kann damit jede Sequenz von 5 x 5 ASCII-Bildern gedruckt werden.
Vielen Dank an James Holderness, der mir geholfen hat, dreistellige Zahlen zu überwinden!
quelle
48*
kann durch ersetzt werden'
(da dies immerhin 98 ist) und88*
kann durch ersetzt werden'@
. Danke, dass du mir geholfen hast, dreistellige Zahlen zu überwinden!C #,
290279267265 BytesBearbeiten: 12 Bytes dank @milk gespeichert! Und 2 weitere dank @TheLethalCoder
Golf gespielt:
Ungolfed:
Ausgänge:
quelle
Func<string,string>j=a=>a.Replace("|",g)+"\r\n";
Stax , 33 Bytes "BCDEO"
Führen Sie es aus und debuggen Sie es
Ich habe Buchstaben ausgewählt
Diese Eigenschaften bedeuten, dass jeder Buchstabe durch ein 3x3-Raster dargestellt werden kann. Hier sind die 9 Regionen, dargestellt durch Ziffern.
Betrachten Sie den Buchstaben "B". Es kann durch 3 Oktalziffern dargestellt werden:
656
. Jede Ziffer enthält drei Bits, die steuern, welche Bereiche für diesen Buchstaben aktiviert sind. Diese Technik funktioniert auch bei "CDEO".Entpackt, ungolfed und kommentiert sieht das Programm so aus.
Führen Sie dieses aus
quelle
Python 3,
234228227166 Bytes (CLOUD):Drucke:
quelle
Python 3, 178 Bytes
Gewinnt nicht, verwendet aber keine Komprimierung. Es macht das:
Jede Hilfe ist willkommen, ich habe wahrscheinlich etwas verpasst. Ich habe Python 2 nicht verwendet, weil Sie das nicht können
p=print
, und das spart 17 Bytes. Probieren Sie es auf repl.it.quelle
p=print
, können Sie eine einzelneprint
Anweisung mit dem Argument kw verwendensep='\n'
.Ruby, 101 Bytes (TIFLE)
Ich suchte mir Buchstaben aus, für die in jeder Zeile ein einzelner Buchstabenblock (1,4 oder 5 Buchstaben) erforderlich war. F, L und E sind linksbündig, aber T und ich benötigen führende Leerzeichen, wenn ein einzelner Buchstabe (vertikaler Teil) gedruckt wird. Der Code zum Hinzufügen dieser Leerzeichen scheint verbessert werden zu können.
ungolfed
quelle
C 176 Bytes
Wenn implizite Ints zulässig sind, können weitere 8 Bytes abgeschnitten werden.
Ausgabe: EDCBA
So funktioniert es: Das Makro R wiederholt einen Code nur fünfmal. Angesichts der Häufigkeit, mit der Fünfer in diesem Problem auftreten, sehr nützlich. Nun: Hier ist was T (int) macht. T nimmt eine ganze Zahl und verwendet sie als Bitfeld, um zu bestimmen, wo Buchstaben und Leerzeichen gedruckt werden sollen. Wenn angegeben Zum Beispiel
T(0b11111111100111111110011100)
, wird es ausgegeben:EEEEE DDDD CCCC BBBB AAA
. Es zählt nach und nach herunter, welcher Buchstabe gedruckt wird. Zuerst wird E, dann D, dann C, dann B und dann A ausgegeben. Wenn Sie f () aufrufen, wird das gesamte Objekt gedruckt.quelle
Batch, 135 Bytes (DOCILe)
Hinweis: Die erste Zeile endet in 5 Leerzeichen.
quelle
BASH,
95111 Bytes (EBASH)Golf gespielt
Erläuterung
Base64 über rohen LZMA-Byte-Stream
Demo
Haftungsausschluss
Ja, mir ist klar, dass dies nicht wirklich portabel ist. Deshalb habe ich ein Byte bezahlt, um die xz- Warnungen im ersten Fall mit -q zu unterdrücken > :)
quelle
Python 2,
208194193 BytesDies ist mein allererster Code Golf;) Spaß zu machen
Ausgabe:
Die Verwendung eines Wörterbuchs zerstört die Sortierreihenfolge der Buchstaben, aber das war keine Voraussetzung
quelle
Perl 94 Bytes.
Die ersten 4 Buchstaben (
D
,O
,I
,C
) sind insbesondere die oberen und unteren Linien ähnlich, und die mittleren ähnliche so gewählt. Da es keinen ähnlichen Buchstaben gibt, habe ich das "L" gewählt, um den gleichen Algorithmus anwenden und die fehlenden 4L hinzufügen zu können.Ich habe einige zusätzliche Bytes gespart, indem ich
\n
den Code durch eine echte neue Zeile ersetzt habe.Ergebnis:
quelle