Die Herausforderung:
Für eine Eingabe von einem Buchstaben X (Groß- oder Kleinschreibung von A bis Z) und einer Ziffer N (0-9) drucken Sie den entsprechenden Buchstaben X aus N * X.
Der Brief muss aus dieser Liste stammen:
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
Beispiele:
Eingabe: a 1
Ausgabe:
AAA
A A
AAAAA
A A
A A
Eingabe: A 0
Ausgabe: A
Eingabe: A 2
Ausgabe:
AAA AAA AAA
A AA AA A
AAAAAAAAAAAAAAA
A AA AA A
A AA AA A
AAA AAA
A A A A
AAAAA AAAAA
A A A A
A A A A
AAA AAA AAA AAA AAA
A AA AA AA AA A
AAAAAAAAAAAAAAAAAAAAAAAAA
A AA AA AA AA A
A AA AA AA AA A
AAA AAA
A A A A
AAAAA AAAAA
A A A A
A A A A
AAA AAA
A A A A
AAAAA AAAAA
A A A A
A A A A
Eingabe: A -1
Ausgabe: was auch immer: es spielt keine Rolle
Zusätzliche Regeln:
- Die Eingabeparameter können durch beliebige Zeichen getrennt werden.
- Jeder Buchstabe muss sein eigenes Großbuchstaben als ASCII-Zeichen verwenden, um ihn zu zeichnen.
- Nachgestellte Leerzeichen, neue Zeilen usw. sind erlaubt
- Anstelle eines Programms können Sie eine Funktion schreiben, die die Ziffernfolge als Argument verwendet. Die Ausgabe sollte normal gedruckt werden.
- Stdout / Stderr spielt keine Rolle, wählen Sie einfach eine aus. Ob Sachen auf den anderen gedruckt werden, spielt ebenfalls keine Rolle.
- Mögliche Ausgabeformate können auf STDOUT gedruckt, als Liste von Zeichenfolgen zurückgegeben, als Zeichenmatrix zurückgegeben usw. werden, sofern das Ergebnis einfach mit der Standarddruckmethode der Sprache gedruckt werden kann. *
*: Wie die Funktion f (a, 1) die Zeichenfolge zurückgibt und man einfach sagen kann, print (f (a, 1)) macht den print () -Aufruf nicht zu einem Teil der Antwort. (Darauf haben Kevin Cruijssen und Arnauld hingewiesen).
Gewinnen:
Dies ist Code-Golf, die niedrigste Anzahl an Bytes gewinnt. Habe Spaß!
Bearbeiten : Diese Frage scheint sehr identisch zu dieser, aber ich würde sagen, es ist nicht, da es nicht nur für H, sondern für jeden Buchstaben aus dem Alphabet funktionieren sollte. Schätze, Sie entscheiden, eher oder nicht, es ist ein Duplikat.
Antworten:
JavaScript (ES8), 281 Byte
Übernimmt die Eingabe als
(letter)(N)
. Gibt eine Zeichenfolge zurück.Probieren Sie es online!
Wie?
Schriftkodierung
Die Buchstaben sind , was bedeutet, dass jede Zeile als 5-stelliger Binärwert codiert werden kann, dh bis in Dezimalzahl. Diese Werte können bequem als einzelne Ziffer in Base36 gespeichert werden.5×5 0 31
Das gespeicherte Muster wird horizontal und vertikal gespiegelt.
Beispiel für 'F':
Die gesamte Schriftart wird als einzelne Zeichenfolge mit Zeichen gespeichert .26×5=130
Um das 'Pixel' bei auf den Buchstaben zu testen, gehen Sie wie folgt vor :(x,y) nth
Hauptalgorithmus
Bei definieren wir , was die Breite der endgültigen Ausgabe ist.n w=5n
Für und möchten wir wissen, ob das Ausgabepixel bei gesetzt ist oder nicht. Wir verwenden die rekursive Funktion , die das Buchstabenpixel testet, das sich befindet bei:0≤x<w 0≤y<w (x,y) h
für alle in .k [0…n−1]
Die Funktion gibt ein Leerzeichen zurück, sobald ein leeres Pixel in einer bestimmten Tiefe erkannt wurde, oder das Zeichen, das dem eingegebenen Buchstaben entspricht, wenn alle Iterationen erfolgreich waren.
quelle
R , 348 Bytes
Probieren Sie es online!
Verwendet eine Kodierung, die fast mit der von Ouros identisch ist . Die Bits werden jedoch nicht umgekehrt, sondern direkt verwendet.
Anschließend wird eine 5x5-Bitmatrix erstellt und die Kronecker Power- Matrix erstellt, um das erforderliche Muster zu generieren und die Ergebnisse in stdout zu schreiben.
quelle
Sauber ,
436372 BytesDeutlich kürzer mit neuem IO-Format.
Probieren Sie es online!
Komprimiert die Buchstabenmuster in Bits ganzzahliger Literale, um ~ 700 Bytes zu sparen. Zum Beispiel
A
:[[' AAA '],['A A'],['AAAAA'],['A A'],['A A']]
[' AAA A AAAAAAA AA A']
['A AA AAAAAAA A AAA ']
in binäre ('A' = 1, ' ' = 0
)0b1000110001111111000101110
in dezimal18415150
quelle
R , 259 Bytes
Probieren Sie es online!
Die Idee ist die folgende:
Ausgehend von dieser
5 x 26*5
Matrix von0/1
:Jede Spalte wird als Binärzahl betrachtet und in eine Ganzzahl umgewandelt. Diese Ganzzahlen werden dann in nicht druckbares ASCII im Bereich 1 ... 31 konvertiert:
zB für die Spalten
"B"
der endgültigen Zeichenfolge werden"\017\021\017\021\017"
(nicht druckbare Zeichen in oktaler Darstellung geschrieben):Ausgehend von der endgültigen Zeichenfolge
5*26 = 130
konvertieren wir diese Zeichenfolge zurück in die folgende Matrix0/1
:dann unterteilen wir einfach die Matrix, indem wir nur die ersten 5 Zeilen auswählen (intToBits liefert 32 Bits) und nur die Spalten, die dem als Eingabe übergebenen Buchstaben entsprechen, und wenden schließlich kronecker an, wie in @ Giuseppes Antwort erläutert .
quelle
-48
Stück zu rasieren , und!
anstelle vonU
: versuchen Sie es online