Zeichnen Sie Folgendes in möglichst wenigen Bytes:
-------------------------
| | ABC | DEF |
| 1 | 2 | 3 |
-------------------------
| GHI | JKL | MNO |
| 4 | 5 | 6 |
-------------------------
| PQRS | TUV | WXYZ |
| 7 | 8 | 9 |
-------------------------
| | | |
| * | 0 | # |
-------------------------
Antworten:
pb , 240 Bytes
(Dieses Programm fordert zur Eingabe in der aktuellen Version von pbi auf, da es auf Y = -1 geht und die
B
Variable versucht, sich selbst zu aktualisieren. Selbst wenn Sie eine Eingabe eingeben, wird nichts kaputt gehen. Es ist ärgerlich, aber besser als die alte Version das forderte zur Eingabe auf, egal was.)pb ist eine Sprache, in der das Terminal als 2D-Zeichenfläche behandelt wird. Um auszugeben, müssen Sie den "Pinsel" (einen Punkt, der durch die aktuellen Werte der X- und Y-Variablen dargestellt wird) an die Stelle bewegen, an der das Zeichen abgelegt werden soll, und ihn dort platzieren. Es ist umständlich für Dinge wie das Ausdrucken eines Wortes, aber für Kunst ist es oft bequem.
Dieses Programm zeichnet nicht genau das, was die Frage angibt. (Warte, stimme mich noch nicht ab! Lass es mich erklären!)
Das Zeichnen von Kisten mit Schleifen ist ziemlich einfach, aber es gibt einen Haken. Wenn Sie die folgende Form wiederholen:
Sie erhalten zwar Kisten, aber die rechte und die untere sind offen. Sie können die zusätzlichen Seiten manuell zeichnen, dies kostet jedoch Bytes. Um dies zu umgehen, zeichnet mein Programm dies tatsächlich mit den offenen Kanten links und oben:
Shh, shh, es ist okay. Mit pb können Sie auf einen Punkt auf der Leinwand mit einem oder mehreren negativen Werten in den Koordinaten "schreiben". Der Wert wird gespeichert, während das Programm ausgeführt wird, aber nur Punkte, an denen X und Y beide> = 0 sind, werden tatsächlich auf den Bildschirm geschrieben. Dieses Programm positioniert den Pinsel so, dass Bereiche, die in diesem Bild getönt sind, ein negatives X oder Y haben:
Obwohl zusätzliche Linien "gezeichnet" werden, werden sie nie gedruckt.
Nach dem Durchlaufen und Erstellen des Rasters füllt dieses Programm die oberen neun Felder aus. Die erste ist fest codiert, eine 1 wird geschrieben und das Programm geht weiter. Die anderen acht werden programmgesteuert generiert. Wenn Sie den Code zum Wechseln zum nächsten Feld ignorieren, feststellen, wann die Zeile leer ist usw. (vorausgesetzt, der Pinsel beginnt immer in der unteren Zeile des Felds und in der mittleren Spalte), wird dies acht Mal ausgeführt:
Selbst wenn Sie wissen, dass dies
b
der Befehl zum Schreiben eines Zeichens ist,^v<>
bewegen Sie den Pinsel und führen Siew[a!b]{}
den Code in geschweiften Klammern aus, bisa != b
dies schwer zu befolgen ist. Als erstes ist zu beachten, dass Sie in pb keine Variablen definieren können. In jedem Programm gibt es sechs, und Sie müssen lernen, mit ihnen zu leben. ZweitensT
ist dies die einzige Variable, die Sie tatsächlich so verwenden können, wie Sie es von Variablen gewohnt sind. einen Wert zuweisen und später lesen. Jede andere Variable kann entweder nicht festgelegt werden und sagt nur etwas über den Punkt auf der Leinwand aus, auf dem Sie sich befinden, oder sie kann nur indirekt und mit Nebenwirkungen festgelegt werden (^v<>
ändernX
undY
, wodurch sich auch die Pinselposition ändert.c
SätzeP
zu(P+1)%8
, wodurch auch die Ausgabefarbe geändert wird). Es ist einfach unmöglich, einen Zähler dafür zu führen, welche Zahl geschrieben werden muss und welche Buchstaben. Stattdessen verfolgt dieser Code nur die Nummer und ermittelt die darauf basierenden Buchstaben. Hier ist wie:Dies ist nicht perfekt, da nur 3 Buchstaben in die Felder 7 und 9 eingegeben werden. Nach dem Füllen der unteren Zeile (einfache Hardcodierung) wird jeder Buchstabe in Feld 9 um 2 erhöht und das W manuell platziert. In ähnlicher Weise wird jeder Buchstabe in den Feldern 7 und 8 um 1 erhöht und das P wird manuell platziert.
Ungolfed:
quelle
Brainfuck, 565 Zeichen (212 Bytes)
Einfacher Code:
quelle
Bubblegum , 103 Bytes
Hexdump:
Langweilig und praktisch.
quelle
Python 2, 147 Bytes
Ein kurzer Entwurf einer grundlegenden Strategie. Verwendet die Zeichenfolgenformatierung, um die Beschriftungen einzufügen, die in einer langen Zeichenfolge fest codiert sind.
quelle
C 160 Bytes
Es ist sinnvoll, die Tatsache zu nutzen, dass die Buchstaben der Reihe nach sind. Dieser Code durchläuft die 325 Zeichen der Tastatur und druckt nach Bedarf entweder ein Leerzeichen oder den nächsten Buchstaben.
Ungolfed
quelle
Java, 296 Bytes
Golf:
Ungolfed:
quelle
Lua, 209 Bytes
Golf:
Ungolfed:
quelle
JavaScript (ES6),
184182 BytesDie Strichreihen sind offensichtlich komprimierbar und die Ziffern auch, aber ich konnte mit den Buchstaben nichts anfangen. Bearbeiten: 1 von 2 Bytes dank @Shaggy gespeichert.
quelle
replace(/-|!./g,s=>s=="-"?s.repeat(25):"| ${s[1]} ")
- Ersetzen von Anführungszeichen durch Backticks. Ich habe ein paar Dinge versucht, um die Buchstabengruppen aufzufüllen, aber das Beste, was ich tun konnte, waren 194 Bytes.CJam, 128 Bytes
Probieren Sie es online aus.
quelle
Perl, 142 + 1 = 143 Bytes
Nicht druckbare Zeichen, daher ist die uuencodierte Version unten.
quelle
-M...
auch gezählt werden?Python 3.5 - 240 Bytes:
Druckt genau das, was das OP will, obwohl es etwas lang sein kann.
quelle
Python 2, 200
Einfache Ersetzungsstrategie.
quelle
Python 2, 168 Bytes
Eine einfache Methode ohne integrierte Komprimierung:
quelle
/// , 154 Zeichen
quelle
GML (Game Maker Language) 8.0, 269 Bytes
In Game Maker
#
ist der Newline-Charakter und es kann durch entkommen\#
quelle
Python 2, 134 Bytes
Diese Quelle enthält nicht druckbare Zeichen und wird daher als Hexdump dargestellt, mit dem dekodiert werden kann
xxd -r
.quelle
05AB1E , 91 Bytes (nicht konkurrierend)
Probieren Sie es online aus!
quelle
J ,
105103 BytesProbieren Sie es online aus!
quelle