Ich habe eine neue Schriftart entworfen, die ich PrettyFont nenne. Ich habe viel Zeit investiert, um es zu perfektionieren, aber da ich ein Arbeiter bin, habe ich keine Zeit, es zu beenden. Daher enthält es derzeit nur 4 Zeichen. Eines Tages, wenn ich reich geworden bin, wird es mein lebenslanges Ziel sein, es zu beenden, aber fürs Erste ...
Dies ist PrettyFont: (0, 1, 2, 3)
#### ## #### ####
# # # # # #
# # # # ###
# # # # #
#### ### #### ####
Jedes Zeichen ist 4 Pixel breit und 5 Pixel hoch. Jetzt! Ich möchte, dass Sie mir ein Programm schreiben, das eine Zahl in PrettyFont ausgibt, damit ich anfangen kann, Entwürfe zum Drucken zu senden.
Regeln:
Die Eingabe ist eine Zeichenfolgennummer in Basis 4 (nur Zeichen 0-3), zum Beispiel "01321". Das Programm sollte mindestens 10 Zeichen in der Zeichenfolge verarbeiten können. BONUS-Punkte werden an das Programm vergeben, das anstelle einer Zeichenfolge eine tatsächliche Ganzzahl zur Basis 10 verwendet. EDIT- Erklärung: Der Ganzzahlbonus bedeutet, dass man eine beliebige Zahl zur Basis 10 wie 54321 eingeben kann. Das Programm konvertiert sie zur Basis 4 und gibt sie aus (in diesem Fall 31100301).
Die Ausgabe ist die mit PrettyFont gedruckte Nummer. Beispiel Ein- und Ausgabe:
> "321"
####
#
###
#
####
####
# #
#
#
####
##
#
#
#
###
Ein riesiger Bonus für das Programm, das es in einer einzigen Zeile wie folgt ausgeben kann:
> "321"
#### #### ##
# # # #
### # #
# # #
#### #### ###
Das Zeichen '#' ist keine Voraussetzung und kann durch ein beliebiges Zeichen ersetzt werden.
Bei der vertikalen Ausgabe ist zwischen jedem PrettyFont-Zeichen eine leere Zeile erforderlich. Wenn jemand die horizontale Ausgabe vornimmt, ist zwischen jedem PrettyFont-Zeichen ein Leerzeichen '' oder ein Tabulatorzeichen erforderlich.
Das ist Code Golf, der kürzeste Code gewinnt! (Ich brauche es kurz, weil mein Bürocomputer nur über begrenzten Speicherplatz verfügt.)
banner -c '#' 0123
Antworten:
k (
118 117 72 71 6966 Zeichen)Ich habe mir noch nicht viel Mühe gegeben, um Golf zu spielen,aber es erreicht die gewünschte horizontale Ausgabe in nicht zu vielen Zeichen:Übernimmt die Eingabe von stdin und druckt die Ausgabe auf stdout.
edit: Durch das Implementieren einer Form der Komprimierung für die Ausgabe "Bitmap" habe ich sie auf 72 reduziert. Die Bitmap wird jetzt erstellt, indem 64-Bit-Ints in Binärdaten konvertiert und die Nullen und Einsen in "#" oder "" abgebildet werden.
Ich könnte es wie bei einigen anderen Lösungen aus dem Hex machen, aber ich denke, das würde länger dauern. Es stellt sich heraus, dass Hex besser ist.Beispielausgabe für 012301:
// edit: -6 Zeichen
quelle
Python3 (124)
Sorry, vertical war für mich nicht interessant.
quelle
J,
848281807569 ZeichenNimmt Eingaben über die Tastatur entgegen:
Magic Numbers FTW (oder für den zweiten Platz in diesem Fall) :-)
quelle
#:
schien nicht für diese Anzahl zu funktionieren.#:1166416635908028473935870
und#:1166416635908028473931775
beide geben die gleiche Antwort für mich.C -
164151 Zeichen horizontalAuf IDEone: http://ideone.com/gljc3
Der Code (164 Bytes):
EDIT - 151 Bytes
Ich habe die Vorschläge aus den Kommentaren hinzugefügt und dann einige. Es ist jedoch nicht ganz sicher (Array mit der Länge 0, in dem ich mich befinde
gets()
...).Beachten Sie,
i=puts("")
ist undefiniertes Verhalten, da ichvoid
als behandleint
! Es kehrt konsistent0
zu meiner Version von MinGW zurück, aber es kehrt1
zu dem Compiler zurück, den IDEOne verwendet.Akzeptiert Dezimalzahlen, gibt Basis 4 aus (167 Bytes)
quelle
gets
innerhalbfor
(save 1). Gehen Sieputs
zum externenfor
Inkrement und speichern Sie die Klammern. Paranthesis speichern:(n[i]-48)*5+j
->n[i]*5-240+j
, gleicher Trick mit+4*(..
.Ruby, 0123 Zeichen + ein Bonus ([0123] vs '#')
Beispiel:
EDIT: Ruby, 87 Zeichen
quelle
Rubin
Vertikal: 116 Zeichen
Probelauf:
Horizontal:
150 bis148 ZeichenProbelauf:
quelle
Mathematica
174145139118119123 ZeichenFunktioniert jetzt mit Eingaben in Basis 10 (Ganzzahlbonus). Frühere Versionen finden Sie in den Bearbeitungen.
Verwenden von ArrayPlot :
Mit können
ArrayPlot
wir die Einsen und Nullen direkt in schwarze und weiße Quadrate umwandeln und dabei ein paar Zeichen sparen. Zum Beispiel mit n = 58021, was 32022211 in Basis 4 ist:Erläuterung
Eingang Programmparameter
n
.Null kann durch
{{1,1,1,1},{1,0,0,1},{1,0,0,1},{1,0,0,1},{1,1,1,1}
oder durch das hexadezimale Gegenstück dargestellt werdenf999f
.Der Ausdruck
f999f62227f924ff171f
enthält die Informationen zur Anzeige aller Zahlen {0,1,2,3}. (Anmerkung: Es beginnt mitf999f
, was, wie wir festgestellt haben, in Verkleidung Null ist.) Da Mathematica dies nicht als Zahl erkennt, habe ich89998622278924881718
stattdessen (in vier Ganzzahlzeichenfolgen) die Zahl in ihre ganzzahligen Ziffern zerlegt und dann verwendet 15 an jeder Stelle erschien eine 8. (Dadurch konnte ich durchgehend Ziffern anstelle von Zeichenfolgen verwenden.)quelle
Mathematica ,
112107103Ich übernehme Davids Methode.
105 mit dem BONUS:
(für
n = 54321
)quelle
APL (
5857)Ausgabe:
quelle
Python 2.7
Vertikal 160
Horizontal
234216Beide nehmen die Eingabe als String in Anführungszeichen auf stdin
Beispiel:
$. / pretty
"0123"
quelle