Was ich möchte:
Ganz einfach, ich möchte ein textbasiertes Display, das nach einer Eingabe fragt n
und dann diesen Wert auf dem Display anzeigt! Aber da ist ein Fang. Jedes der 'wahren' 'Pixel' (die ausgefüllten) muss durch diese Zahl dargestellt werden n
.
Beispiel
Sie erhalten eine Eingabe n
. Sie können davon ausgehen, dass n
es sich um eine einzelne Ziffer handelt
Input: 0
Output:
000
0 0
0 0
0 0
000
Input: 1
Output:
1
1
1
1
1
Input: 2
Output:
222
2
222
2
222
Input: 3
Output:
333
3
333
3
333
Input: 4
Output:
4 4
4 4
444
4
4
Input: 5
Output:
555
5
555
5
555
Input: 6
Output:
666
6
666
6 6
666
Input: 7
Output:
777
7
7
7
7
Input: 8
Output:
888
8 8
888
8 8
888
Input: 9
Output:
999
9 9
999
9
999
Herausforderung:
Machen Sie das in so wenigen Bytes wie möglich.
Ich akzeptiere nur Antworten, die alle Anforderungen erfüllen.
Das Umgeben von Leerzeichen ist optional, solange die Ziffer richtig angezeigt wird.
Außerdem ist <75 Byte eine Abstimmung von mir, die niedrigste Annahme, aber ich könnte die akzeptierte Antwort immer ändern, also lassen Sie sich nicht entmutigen, zu antworten.
code-golf
ascii-art
kolmogorov-complexity
VortexYT
quelle
quelle
Antworten:
SOGL V0.12 , 30 Bytes
Probieren Sie es hier aus! Die komprimierte Zeichenfolge
■'τč▲Β►║⁰ΡāQšJ┘tXdnοO¹‘
istDas sind (beginnend mit 1, endend mit 0) die Zahlen, Zeile für Zeile, Nummer für Nummer. Der Rest
quelle
-
), und der Rest ist einfach. Ich bin gespannt, welchen Online-Tester hast du benutzt? Ich habe noch keine gemacht oder gesehen.JavaScript (ES6), 88 Byte
Die Zahlen kodieren, welche Quadrate Leerzeichen für eine bestimmte Ziffer enthalten, z. B. hat die linke untere Ecke den Wert 146, da die Zahlen 1, 4 und 7 ihn nicht verwenden und 146 = 2¹ + 2⁴ + 2⁷.
quelle
05AB1E ,
403938 BytesProbieren Sie es online!
Erläuterung
quelle
Japt , 43 Bytes
Enthält einige nicht druckbare Elemente. Probieren Sie es online!
Tallies: 13 Byte komprimierte Daten, 9 Byte zum Dekomprimieren und 21 Byte zum Bilden der Ausgabe.
Erläuterung
Ungolfed-Code:
Es gibt genau 4 verschiedene Zeilenmöglichkeiten: (steht
#
für eine Ziffer)Somit kann jede Nummer als ein Satz von fünf Basis-4-Ziffern gespeichert werden. Da jede Nummer dann in 10 Bit gespeichert werden kann, beträgt die Summe 100 Bit, was 13 Byte entspricht. Ich überspringe den Komprimierungsprozess und erkläre stattdessen die Dekomprimierung.
Nach der Dekomprimierung sieht die 13-Byte-komprimierte Zeichenfolge folgendermaßen aus:
Beachten Sie, dass dies fehlschlagen würde, wenn einer der vierstelligen Läufe mit gestartet würde
0
, da die führenden Nullen beims4
Ausführen weggelassen würden . Wir können dies beheben, indem wir0
repräsentieren lassen#
, was nur dreimal vorkommt und keines davon zu Beginn eines 4-stelligen Laufs fällt.Okay, damit unsere 50-stellige Zeichenfolge in 4er-Blöcken komprimiert wird, mussten wir zwei zusätzliche Ziffern hinzufügen. Wenn Sie sie am Anfang der Zeichenfolge einfügen, können Sie sie mit dem Ein-Byte-Befehl abtrennen
¤
.Peinlicherweise verfügt Japt nicht über eine integrierte Funktion zum Aufteilen eines Strings in Segmente der Länge X. Es ist jedoch eine integrierte Funktion zum Abrufen jedes x-ten Zeichens vorhanden, sodass alle Daten gespeichert werden können, indem zuerst alle oberen Zeilen codiert werden alle zweiten Reihen usw.
Jetzt haben wir also die 5-stellige Zeichenfolge, die die zu erstellende Ziffer codiert, z . B.
32223
für0
.Um die magische Zahl zu erklären, beziehen Sie sich auf die vier verschiedenen Zeilen. Wenn Sie
mit ersetzen
#
mit1
und0
, erhalten SieWenn wir dies transponieren und dann zu einer einzelnen Zeichenfolge zusammenfügen, erhalten wir
101100010111
. In Dezimalzahl konvertieren und voilà, Sie haben 2839. Beim Umkehren des Prozesses werden die Ziffern0123
in die vier oben gezeigten Binärzeilen abgebildet.Fast fertig! Jetzt müssen nur noch die Leerzeichen und Ziffern hinzugefügt werden:
Um den Rest kümmert sich die implizite Ausgabe. Es tut mir leid, diese Erklärung ist so lang, aber ich sehe keinen wirklichen Weg, um Golf zu spielen, ohne es weniger verständlich zu machen (wenn es verständlich ist ...)
quelle
JavaScript (ES6),
115111 ByteÜbernimmt die Eingabe als Zeichenfolge.
Wie es funktioniert
Musterkodierung
Die vier unterschiedlichen Mustern
"XXX"
,"X.."
,"..X"
und"X.X"
kann als komprimiert werden"XXX...X.X"
und auf diese Weise extrahiert:Durch Ersetzen der Eingabeziffer
n
durch"X"
und Verwenden von tatsächlichen Leerzeichen erhält man den Ausdruck:Ziffernkodierung
Unter Verwendung der oben definierten Musterkennungen kann jede Ziffer durch eine 5 * 2 = 10-Bit-Menge dargestellt werden.
Zum Beispiel:
Die vollständige Liste ist:
Durch Teilen dieser Werte durch 2 können jedoch zwei Bytes gespart werden. Also speichern wir stattdessen:
Demo
Code-Snippet anzeigen
quelle
Bash + GNU-Utils, 114
Hier gibt es wahrscheinlich noch einige weitere Komprimierungsmöglichkeiten, aber hier ist ein Anfang:
Erläuterung
Jede Reihe jeder Ziffer ist eines dieser vier Muster:
Durch Beschriften dieser 0-3 kann jede Ziffer durch 5 Basis-4-Ziffern dargestellt werden. ZB wäre 0
32223
, und die vollständige Liste der Ziffern wird in Basis 4 als codiert32223000003031330303223003130331323300003232332303
. Dies ist hexadezimal codiert alsEAC00CDF33AC373DEF00EEFB3
.dc
wandelt hexEAC00CDF33AC373DEF00EEFB3
in base-4 um.fold
Setzt 5 Base-4-Ziffern in jede Zeilesed
:x
es) für jede Zeile der angegebenen Ziffer, zusammen mit einer neuen Zeile für das Ende jeder Zeilex
es zu Ziffer n.Probieren Sie es online aus .
quelle
s/1/x \n/g
mits/1/x\n/g
, da diese Räume nicht visuell den Ausgang beeinflussen.MATL ,
4543 BytesProbieren Sie es online!
Erläuterung
quelle
Retina,
166164163 BytesZwei Leerzeichen in der dritten Zeile von unten
Probieren Sie es online!
Eine verbesserte Version der @ Okx- Lösung
quelle
Pyth 82
8591100BytesViel Golfen wahrscheinlich möglich, meine erste Herausforderung.
quelle
Batch-Datei, 8 + 184 Bytes
Hier ist meine obligatorische Batch-Lösung. Leider ist die Standardmethode, um dies zu erreichen, mehr als 300 Bytes im Batch, so dass wir auf viel billigere Taktiken zurückgreifen.
Im aktuellen Verzeichnis habe ich 10 Dateien eingerichtet, die von 0 bis 9 benannt sind. In jeder dieser Dateien befindet sich das jeweilige 5x3-Pixelraster. Beispielsweise:
Die Anzahl der Bytes für diese sind:
Schlage immer noch Java.
quelle
Ruby, 94 Bytes
Ungolfed im Testprogramm
quelle
PHP, 115 Bytes
Probieren Sie es online!
Erweitert
Kodierung Probieren Sie es online!
quelle
Netzhaut , 125 Bytes
Probieren Sie es online! (Löschen Sie die Testsuite in der Kopfzeile, um einzelne Eingabestellen zu testen.) Die letzte Zeile enthält zwei Leerzeichen.
quelle
PowerShell,
126120113109101Unicode macht Spaß. Zeichen sind auch viel kürzer als Zahlen. Der obige Code enthält zweimal U + 0000 und kann daher nicht direkt kopiert werden (funktioniert jedoch in einer Datei einwandfrei). Der folgende Code kann kopiert werden:
Wir verlieren drei Bytes, weil wir zu Beginn die UTF-8-Signatur benötigen. Andernfalls funktioniert die Zeichenfolge nicht.
quelle
Netzhaut , 190 Bytes
Es gibt zwei Leerzeichen in der letzten Zeile,
aber SE möchte es nicht rendern: /Fixed!Probieren Sie es online!
quelle
a
mit drei Ziffern und einer Zeilenumbruch zu kombinieren. (Vielleicht mit Lookaheads?)Java 8,
278214210204 BytesPort of @Neils Retina Antwort . Nimmt die Eingabe als
String
.Probieren Sie es hier aus.
quelle
Python 2 ,
174125 BytesProbieren Sie es online!
quelle
PowerShell ,
159135128118 ByteAktuelle Antwort: Benennung von Fremdvariablen entfernt
Probieren Sie es online!
Ich werde sehen müssen, ob ich aus den anderen Antworten ein paar Tricks herausholen kann: P
EDIT Mit dem Mega-String schlauer werden
EDIT2 Umschalten auf die Verwendung einer Zahlenfolge zum Indizieren
$a
, um 7 Bytes zu sparen. Obwohl mir meine vorherigen dynamischen Variablennamenaufrufe im folgenden Code (135 Byte) gefallen habenquelle
Kohle ,
6138 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Hinweis: Leerzeichen am Ende. Erläuterung:
Teilen Sie die (komprimierte) Zeichenfolge in 5er-Gruppen auf, nehmen Sie die Zeichenfolge am durch die Eingabe angegebenen Index und ordnen Sie sie den Zeichen in der Gruppe zu (die immer 1, 4, 5 oder 7 sind).
Konvertieren Sie das Zeichen von der Basis 10 in die dreistellige Basis 2, indem Sie das eingegebene Zeichen und das Leerzeichen als Ziffern verwenden. Die 5 Ergebnisse werden dann implizit in separaten Zeilen gedruckt.
Ein generischer Port ist etwas langweilig, daher hier eine idiomatischere 61-Byte-Antwort:
Probieren Sie es online! Keine ausführliche Version, da der Deverbosifier keine Richtungslisten oder gar Multidirektionalitäten in gewöhnlichen Polygonen versteht. Erläuterung:
Jeder Pfad wird mithilfe einer Liste von Richtungen (
←↑→↓
) angegeben. Vier verwendbare Verknüpfungen speichern Bytes:L
Repräsentiert↑→
,¬
Repräsentiert↓←
,T
Repräsentiert,→↓←
während+
Repräsentiert→↓←↑
, obwohl mindestens ein Pfeil übrig bleiben muss, damit die Liste als Richtungsliste erkannt wird (also zum BeispielTT
nicht verwendet werden kann3
).quelle
Jelly ,
3532 BytesProbieren Sie es online! oder sie alle sehen .
Das Gleiche wie bei Dzaima.
quelle
Perl 5
-Mbigint -pa
, 101 BytesProbieren Sie es online!
quelle
Python 3 , 119 Bytes
Probieren Sie es online!
Jedes 'Pixel' wird als Ganzzahl dargestellt, wobei jede Zweierpotenz angibt, ob das Pixel einfarbig ist. Dies nutzt die Tatsache aus, dass die drei rechten Ecken immer die Ziffer sind.
quelle
JavaScript (ES8), 87 Byte
quelle