Inspiriert von dieser SO-Frage .
Herausforderung:
Eingang:
- Eine Zeichenfolge
- Ein Charakter
Ausgabe:
Erstellen Sie eine rautenförmige ASCII-Grafik der Zeichenfolge in alle vier Richtungen, wobei das erste Zeichen der Zeichenfolge in der Mitte und nach außen zeigt. Welches ist in einem quadratischen ASCII-Art-Teppich, mit dem Charakter als Füllstoff. Das mag ziemlich vage klingen, also hier ein Beispiel:
Eingabe: = , =
Ausgabe:string
.
..........g..........
........g.n.g........
......g.n.i.n.g......
....g.n.i.r.i.n.g....
..g.n.i.r.t.r.i.n.g..
g.n.i.r.t.s.t.r.i.n.g
..g.n.i.r.t.r.i.n.g..
....g.n.i.r.i.n.g....
......g.n.i.n.g......
........g.n.g........
..........g..........
Herausforderungsregeln:
- Die Eingabezeichenfolge kann auch eine Liste von Zeichen sein
- Die Ausgabe kann auch eine Liste von Zeichenketten oder eine Matrix von Zeichen sein
- Eingabezeichenfolge und Zeichen sind garantiert nicht leer
- Die Zeichenfolge enthält garantiert kein Zeichen
- Sowohl der String als auch das Zeichen können nur als ASCII-Zeichen gedruckt werden (Unicode-Bereich [32,126], Leerzeichen '' bis einschließlich Tilde '~').
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln mit Standard-E / A-Regeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp, verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu (z. B. TIO ).
- Außerdem wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Testfälle:
Eingabe: = , =
Ausgabe:11111
0
00000000100000000
00000010101000000
00001010101010000
00101010101010100
10101010101010101
00101010101010100
00001010101010000
00000010101000000
00000000100000000
Eingabe: = , =
Ausgabe:c12345ABCDEF
#
####################F####################
##################F#E#F##################
################F#E#D#E#F################
##############F#E#D#C#D#E#F##############
############F#E#D#C#B#C#D#E#F############
##########F#E#D#C#B#A#B#C#D#E#F##########
########F#E#D#C#B#A#5#A#B#C#D#E#F########
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
F#E#D#C#B#A#5#4#3#2#1#2#3#4#5#A#B#C#D#E#F
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
########F#E#D#C#B#A#5#A#B#C#D#E#F########
##########F#E#D#C#B#A#B#C#D#E#F##########
############F#E#D#C#B#C#D#E#F############
##############F#E#D#C#D#E#F##############
################F#E#D#E#F################
##################F#E#F##################
####################F####################
Eingabe: = , =
Ausgabe:c@+-|-o-|-O
:
::::::::::::::::::O::::::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
O:-:|:-:o:-:|:-:+:@:+:-:|:-:o:-:|:-:O
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::::::O::::::::::::::::::
Eingabe: = , =
Ausgabe:cAB
c
ccBcc
BcAcB
ccBcc
Eingabe: = ~
, = X
Ausgabe:
~
Eingabe: = /\^/\
, = X
Ausgabe:
XXXXXXXX\XXXXXXXX
XXXXXX\X/X\XXXXXX
XXXX\X/X^X/X\XXXX
XX\X/X^X\X^X/X\XX
\X/X^X\X/X\X^X/X\
XX\X/X^X\X^X/X\XX
XXXX\X/X^X/X\XXXX
XXXXXX\X/X\XXXXXX
XXXXXXXX\XXXXXXXX
()()()
.Antworten:
Canvas , 8 Bytes
Probieren Sie es hier aus!
7 Bytes , spiegelt aber eine Reihe von Zeichen wider.
quelle
R ,
1189592 BytesProbieren Sie es online!
Dank an:
quelle
for
Loops in R ablegen, zumindest zum Golfen.pmin
Logik mit der Umlagerung kombiniert :-)J ,
5956 BytesProbieren Sie es online!
Zu lange Lösung für J ... (ganz und gar meine Schuld)
quelle
R , eine hässliche 118-Byte-Version
Indem die Eingabe ein Vektor aus einzelnen Zeichen ist und eine Matrix ausgegeben wird, anstatt schöne ASCII-Grafiken zu drucken.
Probieren Sie es online!
R ,
161157 Bytes4 Bytes gespart durch Verwendung von ifelse anstelle von bedingten Änderungen
y
Probieren Sie es online!
ungolfed und kommentiert
hmmm, scheint die längste Antwort zu sein!
quelle
Python 2 ,
97969084 BytesProbieren Sie es online!
quelle
05AB1E ,
1511 BytesProbieren Sie es online! oder als Testsuite
Erläuterung
quelle
»
das Symbol in die Fußzeile verschieben können. :)J ,
35 3433 BytesProbieren Sie es online!
-&#
i:
1-|+/|
{: (<*-)
-&#
Negative Indizes beginnen wie in Python bei -1. Sie müssen nur noch die Spalten mit den Nullen einfügen.
1j1( #"1
}:@
,{~
Vielen Dank an Galen Ivanov für den Algorithmus.
quelle
K (ngn / k) , 38 Bytes
Probieren Sie es online!
{
}
Funktion mit Argumentenx
(die Zeichenfolge s ) undy
(das Zeichen c )|x
umkehrenx
y,'
y
jedem voranstellen+
transponieren,/
concat1_
Lass das erste Zeichen fallenAn dieser Stelle haben wir eine Folge von length (
x
) -Instanzeny
gefolgt von den Zeichen vonx
#x
Länge vonx
(#x)'
Schiebefenster von so vielen aufeinanderfolgenden Zeichen2{
}/
zweimal machen+x,1_|x
verbindenx
mit dem umgekehrt ,x
ohne das erste Element, und transponiereny,''
y
jedem voranstellen,/'
concat jeder1_'
lassen Sie eins von jedem fallenquelle
Japt , 15 Bytes
Gibt ein Array von Zeilen zurück
Versuch es
quelle
Kohle , 15 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Ursprünglich als Kommentar zum nun gelöschten Sandbox-Beitrag eingereicht . Erläuterung:
Stellen Sie den Hintergrund auf den zweiten Eingang ein
c
.Ordnen Sie die erste Eingabe
s
zu, um alle Suffixe zu generieren und implizit in separaten Zeilen zu drucken.Horizontal und vertikal reflektieren.
Fügen Sie horizontal zusätzlichen Platz hinzu.
quelle
Ruby ,
958475 BytesProbieren Sie es online!
Nimmt die Eingabezeichenfolge als ein Array von Zeichen. Gibt ein Array von Zeichenfolgen zurück.
quelle
Wolfram-Sprache (Mathematica) , 121 Byte
Probieren Sie es online!
quelle
Japt , 16 Bytes
Hinweis: Ich werde es Golf spielen :)
Probieren Sie es online!
quelle
PowerShell , 120 Byte
Probieren Sie es online!
An manchen Tagen schmerzt es wirklich, Indexbereiche anstelle von Slices zu haben. Heute ist einer dieser Tage. Aufgrund der Verwechslung von verbundenen Bereichen beim Umgang mit einzelnen Elementen (z. B. Rückgabe von 0..0 + 1..0) wird eine spezielle Groß- / Kleinschreibung verwendet, um dies insgesamt zu vermeiden (auf Kosten vieler Bytes).
quelle
Japt , 15 Bytes
Versuch es
quelle
Jelly , 11 Bytes
Probieren Sie es online!
ŒṘ
Y
\n
quelle
PowerShell ,
82 bis83 Byte+2 Bytes dank Veskah: Der Fehler in der Groß- und Kleinschreibung wurde behoben
-1 Byte: Die Regel
Input-string may also be a list of characters
verwendetProbieren Sie es online!
Weniger golfen:
quelle
~
Pip ,
24 bis20 BytesVerwenden Sie das
-l
Flag, um eine lesbare Ausgabe zu erhalten. Probieren Sie es online!Erläuterung
Zum Beispiel mit Eingaben von
abcd
und.
:quelle
Attache , 57 Bytes
Probieren Sie es online! Ausgabe ist eine Liste von Zeilen.
Erläuterung
quelle
Perl 6 , 79 Bytes
Probieren Sie es online!
Anonymer Codeblock, der Eingaben wie "curried" annimmt
f(char)(string)
und eine Liste von Zeilen zurückgibt. Ich denke, ein anderer Ansatz wäre kürzer.Erläuterung:
quelle
APL (Dyalog Classic) ,
3231 BytesProbieren Sie es online!
quelle
Perl 5 mit
-lF
,-M5.010
, 71 BytesProbieren Sie es online!
quelle
C # (Visual C # Interactive Compiler) , 249 Byte
Probieren Sie es online!
Das muss verbesserungsfähig sein ...
quelle
JavaScript (Node.js) , 143 Byte
Probieren Sie es online!
Ein bisschen mehr Nachdenken würde zu Berechnungen in Form eines eindimensionalen Arrays und weniger Bytes führen.
quelle
Kotlin , 250 Bytes
Hinweis: Kotlin tio kann derzeit keine neue Klasse zurückgeben, sodass dieser Code eine Nullzeigerausnahme erhält. Dies gilt auch für Codes, die ich zuvor veröffentlicht habe und die zu diesem Zeitpunkt funktionierten. Ich gehe davon aus, dass es irgendwann behoben wird, konnte aber keinen Support-Kontakt finden, an den das Problem gemeldet werden kann. Es kann auch hier ausgeführt werden .
Probieren Sie es online!
quelle
.joinToString("\n")
aus der Byteanzahl entfernen können (und zwar in der Fußzeile außerhalb der Funktion).Gaia , 19 Bytes
Probieren Sie es online!
Erklärung folgt.
quelle
JavaScript (Node.js) , 101 Byte
Probieren Sie es online!
quelle
TSQL-Abfrage, 191 Byte
Drücken Sie in MS-SQL Server Management Studio Strg-T, bevor Sie diese Abfrage ausführen. Dadurch wird die Ausgabe in Text geändert.
Dieses Skript baut die Ausgabe von links nach rechts in einer langen "Zeichenfolge" auf und berechnet den Wert, der an jeder Position eingefügt werden soll. Die Ausgabe ist auf 4096 Zeichen begrenzt.
Golf gespielt:
Ungolfed:
Ich musste einige Änderungen vornehmen, um die Ausgabe in der Online-Version zu formatieren.
Probieren Sie es online aus
quelle
Java (JDK) ,
213199198 BytesProbieren Sie es online!
-14 bytes
danke an @KevinCruijssen-1 byte
danke an @ceilingcatUngolfed
quelle
Wolfram-Sprache (Mathematica) , 68 Byte
Probieren Sie es online!
Nimmt eine Liste von Zeichen (zusammen mit dem Füllzeichen) als Eingabe und gibt eine Zeichenmatrix aus.
Um den Index der Liste der Zeichen zu nehmen, verwenden wir
list[[index]]
, der intern erweitert wird, umPart[list, index]
. Wenn der Index gültig ist, wird dieser Ausdruck zu dem Wert an diesem Index ausgewertet. Wenn nicht - wenn der Index keine Ganzzahl ist oder außerhalb des Bereichs liegt - bleibt der Ausdruck unbewertet.Das einfachste (kürzeste) Muster , das mit einem oder mehreren Argumenten übereinstimmt,
Part[...]
jedoch nicht mit einem einzelnen Zeichen, ist_@__
, dass ein Ausdruck mit einem oder mehreren Argumenten übereinstimmt.quelle