Aufgabe
Erstellen Sie bei einem druckbaren Nicht-Whitespace-Zeichen eine 3x3-Quadrat-Darstellung dieser Eingabe. Wenn zum Beispiel die Eingabe ist #
, dann ist die Ausgabe:
###
# #
###
Regeln
- Das Ausgabeformat ist streng, obwohl ein abschließender Zeilenumbruch zulässig ist. Dies bedeutet, dass das Leerzeichen in der Mitte und die zwei Zeilenumbrüche zwischen den drei Zeilen erforderlich sind.
Testfälle
Eingang: #
Ausgabe:
###
# #
###
Eingang: A
Ausgabe:
AAA
A A
AAA
Eingang: 0
Ausgabe:
000
0 0
000
Wertung
Das ist Code-Golf . Kürzeste Antwort in Bytes gewinnt.
Antworten:
Kohle ,
53 BytesProbieren Sie es online! Bearbeiten: 40% gespart dank @carusocomputing. Erläuterung:
quelle
B³S
um den lebenden Mist zu betrügen.Karotte , 11 Bytes
Probieren Sie es online!
Das Programm befindet sich im Caret-Modus, wobei
#
s durch die Eingabe ersetzt werden.quelle
Python 2 , 32 Bytes
Probieren Sie es online!
Denn
s='a'
: die Mittes+'\n \n'+s
erzeugta\n \na
unds.join
dreht es ein (fettgedruckte sind diejenigen, die es hinzufügen), weil sie eine Zeichenfolge als Iterationszeichen akzeptiert und dann mit den beiden fehlenden Zeichen umgeben istaa\na a\naa
a
.join
.join
quelle
3*c+c.join('\n \n')+3*c
um 32MATL , 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
05AB1E , 8 Bytes
Probieren Sie es online!
Ursprüngliche Idee, 30 als Binärzahl zu verwenden (unvollendet, jemand anderes versucht dies in einer anderen Sprache):
05AB1E , 12 Bytes
Probieren Sie es online!
quelle
Python 3.6 , 33 Bytes
Probieren Sie es online!
quelle
import sys
und dannsys.version
in der Repl, gibt es 3.6.1 statt 3.5.2 zurück. Keine Ahnung, warum oben dann 3.5.2 steht, sie haben da wohl einen Fehler gemacht!RPL (Reverse Polish Lisp) , 60 Zeichen
(Beachten Sie, dass "→" auf dem HP48 und kompatiblen Rechnern ein einzelnes Zeichen ist.)
Stellt visuell dar, was Sie möchten, indem Sie drei Elemente auf dem Stapel haben:
Wenn Sie darauf bestehen, es als eine Zeichenfolge zurückzugeben, müssen Sie auch die Zeilenumbrüche hinzufügen und die Zeichenfolgen kombinieren, die Sie als Übung dem nächsten Tester überlassen haben.
Erläuterung:
→STR
: Machen Sie das letzte Objekt im Stapel zu einer Zeichenfolge. (Die Eingabe kann also alles sein, zB eine Zahl.)1
4
: Schieben Sie die Nummer1
und4
auf den Stapel.START [...] NEXT
: Wie eine for-Schleife, jedoch ohne Zugriff auf die Zählervariable. Nimmt zwei Zahlen aus dem Stapel (hier haben wir nur geschoben1
und4
) und führt den Code[...]
der entsprechenden Zeiten (hier vier Mal).DUP
: Dupliziere den letzten Eintrag im Stapel." "
: Schieben Sie die Zeichenfolge(dh die Zeichenfolge mit einem Leerzeichen) auf den Stapel.
+
: Nehmen Sie zwei Objekte aus dem Stapel und geben Sie sie addiert für Zeichenfolgen zurück: Verkettet.4
: Schieben Sie die Nummer4
auf den Stapel.ROLLD
: Nimmt das letzte Element (hier:4
das wir gerade verschoben haben) vom Stapel und rollt das nächste Element so weit nach unten, wie es die Zahl angibt, die wir gerade vom Stapel genommen haben.SWAP
: Vertauscht die beiden letzten Stapelelemente.2
:2
Zum Stapel schieben.PICK
: Nimmt ein Element (hier: Das, was2
wir gerade in den Stapel geschoben haben), interpretiert es als Zahl n und kopiert das n-te Element aus dem Stapel.quelle
JavaScript, 28 Byte
Versuch es
quelle
c+'\n'+c
in einer temporären Datei speichern .Gelee , 8 Bytes
1 Byte danke an Erik den Outgolfer.
Probieren Sie es online!
quelle
x4µ©;⁶;®œs3Y
12 Bytes, weil ich nicht herausfinden konnte, wie ich vermeiden kann, dass die Wiederholung meinen gesamten Zwischenschritt multipliziert, aber schön!K
zu tunj⁶
. Oh, und es gibt eine schnelle`
Möglichkeit, eine Dyade in eine Monade umzuwandeln, indem auf beiden Seiten dasselbe Argument verwendet wird.Java 7,
5655 Bytes-1 Danke an Leaky Nun für den Hinweis auf den Raum, den ich verpasst habe
Ersetzt einfach die Punkte durch das angegebene Zeichen für die Eingabe #:
Probieren Sie es online!
quelle
PHP, 32 Bytes
Probieren Sie es online!
quelle
<?=$a=$argn,"$a$a\n$a $a\n$a$a$a";
(echter Zeilenumbruch statt \ n natürlich) hat genau die gleiche Byteanzahl.sed,
2818 bytesProbieren Sie es online!
quelle
:
. Fest.Brain-Flak ,
7670 + 1 = 71 BytesBenötigt die
-c
FlaggeProbieren Sie es online!
quelle
(()()()()()){}
mit([])[]{}
.Pyth, 7 Bytes
Versuchen Sie dies online.
Erläuterung:
quelle
Brain-Flak ,
61, 59 BytesProbieren Sie es online!
Dies sind 58 Byte Code-
+1
Byte für das-c
Flag, das die ASCII-Eingabe und -Ausgabe ermöglicht.Erläuterung:
quelle
C (gcc) ,
4947 Bytes2 Bytes gespart dank 2501!
Probieren Sie es online! hat einen nachgestellten Zeilenumbruch
quelle
for(j=11;j;)...
Python 3 , 34 Bytes
Probieren Sie es online!
quelle
lambda x:x*3+'\n%s '%x+x+'\n'+x*3
Oktave , 36 Bytes
Probieren Sie es online!
Erläuterung
Dadurch wird eine 3x3-Zeichenmatrix erstellt, in der das Eingabezeichen wiederholt wird, und der fünfte Eintrag in der Hauptreihenfolge der Spalten (dh in der Mitte) wird auf
32
(ASCII für Leerzeichen) gesetzt.quelle
Pyke , 5 Bytes
Probieren Sie es online!
quelle
Ruby ,
2725 Bytes2 Bytes gespart dank Level River St
Probieren Sie es online!
quelle
f=...
) und dann mitf.call(...)
"\n"
, um 1 Byte zu sparen. Noch besser$/
ist es, eine spezielle Variable zu verwenden, die standardmäßig auf newline gesetzt ist und 2 Bytes spart.tr
Lösung. nette ArbeitBrainfuck, 40 Bytes
Probieren Sie es online! Benötigt eine Implementierung, die links von der Startposition zugreifen kann.
Siehe auch: Gravitons Brainfuck-Antwort, die einen anderen Ansatz hat (aber länger ist).
Erläuterung:
Brainfuck kann mit seinem begrenzten Befehlssatz eine Menge cooler Tricks machen. Leider verwendet diese Antwort keine von ihnen, da es (in Form von Bytes) billiger ist, nur alles fest zu codieren.
# = Eingabezeichen, _ = Leerzeichen (ASCII 32), \ n = Newline (ASCII 10)
Ergebnisse in dieser schönen Box (für Eingabe '+'):
quelle
05AB1E ,
76 Bytes-1 Byte dank Carusocomputing.
Erläuterung:
Verwendet die CP-1252- Codierung. Probieren Sie es online!
quelle
ж¹ðJû
für 6 Bytes.Pyth , 11 Bytes
Probieren Sie es online!
Erläuterung:
quelle
> <> ,
2423 BytesProbieren Sie es online!
quelle
Swift3, 50 Bytes
Hierbei wird der ternäre Operator verwendet, um je nach Zeile unterschiedliche Zeichenfolgen zu drucken.
Probieren Sie es online aus
quelle
V , 8 Bytes
Probieren Sie es online!
quelle
<M-h>ollow
Befehl, mit dem Sie das Innere Ihrer Box aushöhlen können: Probieren Sie es online aus!C #, 50 Bytes
Testfall:
quelle
Console
dhSystem.Console..
Vim, 9 Tastenanschläge
Vorausgesetzt, das Eingabezeichen ist in einem Puffer vorhanden, macht vim dies unkompliziert
Wahrscheinlich gibt es hier einige Magic Vim-Befehle (es scheint immer welche zu geben), daher sind Verbesserungsvorschläge willkommen. Nur ein Tastendruck hinter V!
quelle
Z80- oder 8080-Baugruppe, 21 Byte Maschinencode
Angenommen, ein speicherzugeordnetes E / A-Gerät:
Kein Dolmetscher nötig!
Hexdump:
Dabei ist die Eingabeadresse auf FF00h und die Ausgabeadresse auf FF01h abgebildet. Die tatsächlichen Adressen hängen von der tatsächlichen Hardware ab. Dies setzt natürlich voraus, dass die E / A speicherabgebildet ist. Wenn es sich um eine E / A-Zuordnung handelt, werden mehrere zusätzliche Bytes benötigt, da die E / A-Anweisungen für Z80 und 8080 jeweils aus zwei Bytes bestehen. Dies setzt auch voraus, dass das Ausgabegerät 0Ah als Zeilenumbruch interpretiert und keinen CR (0Dh) benötigt, der dem Programm zusätzliche 4 Bytes hinzufügt.
quelle
J-Uby ,
2220 Bytes-2 Bytes dank @Jordan
Erläuterung
String#tr
ist Rubys zeichenweise Ersetzungsmethode. Das erste&
bindet:tr
an"...\n. .\n..."
und das zweite trifft teilweise'.'
auf es zu. Tatsächlich ist dies->s{"...\n. .\n...".tr('.',s)}
quelle
:tr
so gut funktionieren wie:gsub
hier?