In dieser Herausforderung erhalten Sie einen Textblock und müssen den Text reflektieren.
Eingang:
- Ein String, der reflektiert werden soll. Der Text darf nicht als Array übergeben werden, dessen Elemente die Textzeilen sind. Zum Beispiel
"ab\ncd"
und['a','b','\n','c','d']
sind erlaubt, aber['ab','cd']
oder[['a','b'],['c','d']]
nicht. Sie können davon ausgehen, dass alle Zeilen die gleiche Anzahl von Zeichen enthalten (bei Bedarf mit Leerzeichen aufgefüllt). - Ein Boolescher Wert, bei dem
True
Y-Reflexion undFalse
X-Reflexion angegeben werden
Die beiden Eingaben können in beliebiger Reihenfolge übergeben werden.
Ausgabe:
Die reflektierte Zeichenfolge. Die Zeichen ändern sich nicht, nur ihre Position. Der resultierende Bildblock sollte oben links ausgerichtet sein (die erste Zeile und Spalte müssen jeweils ein Nicht-Leerzeichen enthalten). Leerzeichen (in allen Zeilen) dürfen nachgestellt werden.
Testfälle:
False
o /
--|/
|
/ \
/ o
/|--
|
\ /
True
o /
--|/
|
/ \
/ \
|
--|/
o /
True
text
text
False
text
txet
True
P
P
C
G
G
C
P
P
False
P
P
C
G
P
P
C
G
True
abcde
fghij
kl mn
opqrs
tuvwx
tuvwx
opqrs
kl mn
fghij
abcde
Dies ist ein Code-Golf , also antworten Sie mit der kürzesten Antwort in Ihrer Lieblingssprache!
1
und0
) verwenden oder müssen wirTrue
und verwendenFalse
?\n
würde ich sagen, dass es sich nicht um eine Zeichenfolge handelt.Antworten:
C #,
168144141120 BytesNeue Version verwendet die offensichtliche Zeichenfolge. Join-Überladung, die einen IEnumerable benötigt, die erste Lösung war die versehentliche Verwendung. Ich konnte sie nur für die else-Seite des Ternarys verwenden.
Aktualisieren:
Die neue Version ist ein anonymes Lambda und spart mit dem Currying insgesamt 21 Bytes. Dies ändert die Verwendung dahingehend, dass
f("text")(false)
f die anonyme Funktion ist.Ungolfed:
quelle
Pyke, 7 Bytes
Probieren Sie es hier aus!
quelle
Brainfuck,
143140131 BytesSchlage
sC #.Die Herausforderung war für Brainfuck einfach genug und ich war anscheinend müde genug, es einfach tun zu müssen.
Nimmt den Booleschen
0x00
Wert als (falsch) oder ein anderes (wahres) Byte am Anfang der Eingabe und dann als mit einem Rechteck aufgefüllte Zeichenfolge.Gibt eine nachgestellte Zeile für den Y-Flip und keine für den X-Flip aus.
Benötigt einen Interpreter, der Speicherorte links vom Start unterstützt (nicht sicher, ob noch erforderlich) und EOF als gibt
0x00
. Ein solcher Dolmetscher ist hier . Unterstützt aus diesem Grund offensichtlich keine Null-Bytes in der Eingabe.Der Code enthält viele Blöcke mit
+
Zehner- oder-
Zehnerzeichen. diese können wahrscheinlich reduziert werden.Kommentierte Version
quelle
32-Bit-x86-Computercode, 76 Byte
In hex:
Eingabe::
EBX
Richtungsflag (0/1),:ESI
Eingabezeichenfolge,:EDI
Ausgabepuffer. Die Eingabe muss rechteckig sein.quelle
Haskell,
514945 BytesAnwendungsbeispiel:
In Zeilen aufteilen, entweder die Zeilen umkehren (True) oder jede Zeile umkehren (False) und wieder zu einer einzelnen Zeichenfolge zusammenfügen. Bei einer
True
Eingabemap r:[r|b]
handelt es sich um eine Liste mit zwei Funktionen[<reverse each line>, <reverse lines>]
und bei einerFalse
Eingabe um eine Liste mit einer Funktion[<reverse each line>]
.last
wählt das letzte Element dieser Liste aus.quelle
Gelee , 8 Bytes
Probieren Sie es hier aus.
quelle
Python, 56 Bytes
Rufe mit einer Zeichenkette
s
und jedem Wahrheitsgehalt / Falschwertr
.quelle
True
, der auch sein könnte1
. Sie können die Eingabe nicht auf nur0
oder beschränken2
.Python 3.5, 61 Bytes:
Eine einfache anonyme Lambda-Funktion, die eine rechteckige Eingabe annimmt. Rufen Sie es auf, indem Sie zuerst die Funktion benennen und dann die Funktion in einem Wrapper aufrufen
print()
. Mit anderen Worten, wenn die Funktion genannt wurdenH
, rufen Sie es mögenprint(H(<Bool value>, <String>))
, wo<Bool Value>
irgendein wahr oder falsch Wert (dh0/1
,true/false
usw.) und<String>
ist die Eingabezeichenfolge.Sehen Sie es in Aktion! (Repl.it)
Hier ist eine andere Version mit der gleichen Länge, die ebenfalls eine rechteckige Eingabe annimmt, diesmal jedoch eine benannte Funktion, dh Sie müssen sie nicht zuerst benennen oder in sie einschließen
print()
:Nenne das einfach so
J(<Bool Value>,<String>)
.Sehen Sie dies in Aktion! (Repl.it)
Ich bin jedoch nicht derjenige, der hier aufhört. Obwohl wir eine rechteckige Eingabe annehmen dürfen, habe ich auch eine Version erstellt, die diese Art von Eingabe nicht annimmt. Daher werden alle Zeilen auf der Grundlage der Zeile mit der maximalen Länge auf die gleiche Länge gesetzt, wenn und nur wenn die
<Bool>
Eingabe dies istFalse
, da nur eine X-Reflexion dazu führt, dass die Zeichenfolge "gespiegelt" wird. Hier nun ohne weiteres die nicht rechteckige unterstellte Version mit einer Länge von134.129Bytes in Form einer normalen Funktion:Sehen Sie diesen Letzten in Aktion! (Repl.it)
quelle
MATL , 11 Bytes
Probieren Sie es online!
Die erste Eingabe ist die mehrzeilige Zeichenfolge. Da MATL keinen
\n
Zeilenvorschub erkennt , sollte die mehrzeilige Zeichenfolge als Verkettung von Teilzeichenfolgen oder einzelnen Zeichen definiert werden10
(ASCII für Zeilenvorschub, der als Zeichen interpretiert wird). Die Verkettung in MATL ist[... ...]
oder[..., ...]
(Kommas sind optional). Die Eingabe kann beispielsweise wie folgt erfolgen (Verkettung einer Zeichenfolge, eines Zeilenvorschubs und einer anderen Zeichenfolge):oder gleichwertig (Verkettung einzelner Zeichen)
oder (gleich mit Komma)
Die zweite Eingabe kann als
1
/0
oder gleichwertig alsT
/F
fürtrue
/ erfolgenfalse
.Erläuterung
quelle
Brachylog ,
262416 BytesErwartet eine Liste mit dem String und dem Booleschen Wert
1
oder0
zErläuterung
quelle
Pyth, 10 Bytes
Testsuite.
quelle
Bash + gemeinsame Linux-Utils, 16
Boolescher Wert (null oder nicht null), der als Befehlszeilenparameter übergeben wird. E / A des Textblocks über STDIN / STDOUT. Es wird davon ausgegangen, dass alle Zeilen dieselbe Länge haben, wie in den Kommentaren angegeben .
quelle
C (Ansi), 193 Bytes
Golf gespielt:
Ungolfed:
Verwendung:
Zusammenstellungsargumente:
Beispiel Eingabe:
Die Eingabe ist bei oder nicht t für wahr oder falsch, gefolgt von einem NewSpace-Lead und einem nachgestellten String.
Beispielausgabe:
quelle
JavaScript (ES 6) 83 Byte
quelle
f(c,0)
wenn ich es versuche - vielleicht hat Ihrc
nicht alle Leerzeichen an den richtigen Stellen.Julia, 59 Bytes
Probieren Sie es online!
quelle
J, 29 Bytes
Die LHS-Eingabe ist der Boolesche Wert, bei dem 0 falsch und 1 wahr ist. RHS ist die Zeichenfolgeeingabe.
quelle
JavaScript (ES6), 76
quelle
Java 99 Bytes
Golf gespielt:
quelle
Perl, 35 Bytes
34 Byte Code + 1 für
-n
.Erfordert, dass die Eingabezeilen mit Leerzeichen aufgefüllt werden. Dank @ Dada werden 13 (!) Bytes gespeichert .
Verwendung
quelle
perl -ne 'print/T/?reverse<>:map~~reverse,<>'
sollten Sie 13 Bytes sparen :-)Mathematica, 70 Bytes
Bei einer anonymen Funktion wird ein boolescher Wert als erstes Argument (explizit
True
oderFalse
in Mathematica) und die (mehrzeilige) Zeichenfolge als zweites Argument verwendet. Importiert die Zeichenfolge als Liste von Zeichenfolgen, die den Zeilen der mehrzeiligen Zeichenfolge entsprechen (die Zeichenfolge wird NICHT als Array an die Funktion übergeben). WennTrue
ja, kehren Sie die Liste um. IstFalse
StringReverse
die Liste, die automatisch auf jedes Element der Reihe nach angewendet wird. Exportieren Sie dann die Liste als Zeichenfolge, wobei jedes Element eine neue Zeile ist.quelle
05AB1E , 10 Bytes
Erläuterung
Probieren Sie es online!
quelle
Vim, 33 Bytes
Die vorherige V-Antwort wurde zu Vim geändert. Jede V-Antwort wäre ganz anders, also war es nicht wirklich fair.
Probieren Sie es online!
Hexdump
quelle