Nehmen Sie drei Eingänge, einen Text - String, T
; eine Zeichenfolge, die ersetzt werden soll F
; und eine Zeichenfolge, die durch, ersetzt werden soll R
. Ersetzen Sie für jeden Teilstring T
mit den gleichen Zeichen (ohne Berücksichtigung der Groß- und Kleinschreibung) wie F
diese durch die Zeichen in R
. Behalten Sie jedoch die gleiche Schreibweise wie beim Originaltext bei.
Wenn mehr Zeichen R
als enthalten sind F
, sollten die zusätzlichen Zeichen mit denen in identisch sein R
. Wenn Zahlen oder Symbole in enthalten sind F
, sollten die entsprechenden Zeichen in R
der Groß- / Kleinschreibung beibehalten werden R
. F
erscheint nicht unbedingt in T
.
Sie können davon ausgehen, dass sich der gesamte Text im druckbaren ASCII-Bereich befindet.
Beispiele
"Text input", "text", "test" -> "Test input"
"tHiS Is a PiEcE oF tExT", "is", "abcde" -> "tHaBcde Abcde a PiEcE oF tExT"
"The birch canoe slid on the smooth planks", "o", " OH MY " -> "The birch can OH MY e slid OH MY n the sm OH MY OH MY th planks"
"The score was 10 to 5", "10", "tEn" -> "The score was tEn to 5"
"I wrote my code in Brain$#@!", "$#@!", "Friend" -> "I wrote my code in BrainFriend"
"This challenge was created by Andrew Piliser", "Andrew Piliser", "Martin Ender" -> "This challenge was created by Martin Ender"
// Has a match, but does not match case
"John does not know", "John Doe", "Jane Doe" -> "Jane does not know"
// No match
"Glue the sheet to the dark blue background", "Glue the sheet to the dark-blue background", "foo" -> "Glue the sheet to the dark blue background"
// Only take full matches
"aaa", "aa", "b" -> "ba"
// Apply matching once across the string as a whole, do not iterate on replaced text
"aaaa", "aa", "a" -> "aa"
"TeXT input", "text", "test" -> "TeST input"
code-golf
string
code-golf
string
ascii-art
alphabet
code-golf
number
sequence
counting
code-golf
sequence
counting
code-golf
quine
source-layout
code-golf
string
code-golf
decision-problem
game
code-golf
string
quine
source-layout
subsequence
code-golf
quine
code-golf
array-manipulation
integer
code-golf
ascii-art
code-golf
sequence
integer
code-golf
kolmogorov-complexity
code-golf
array-manipulation
integer
code-golf
number
array-manipulation
integer
code-golf
string
number
integer
code-golf
string
ascii-art
code-challenge
test-battery
expression-building
source-layout
printable-ascii
code-bowling
code-golf
number
code-golf
number
string
binary
code-golf
matrix
conversion
code-golf
number
arithmetic
Andrew sagt Reinstate Monica
quelle
quelle
"TeXT input", "text", "test"
"The birch canoe slid on the smooth planks", "o", " OH MY "
so witzig fand, aber ich liebte dieses Beispiel.Antworten:
Netzhaut , 116 Bytes
Probieren Sie es online! Erläuterung:
Diese Suche wird ausgeführt,
T
undF
jedes Mal, wenn zwischen Groß- und Kleinschreibung kein Unterschied zwischen dem Lookahead und dem Match besteht, werden mehrere Zeilen mit ZeilenumbrüchenR
eingefügt, und der Lookahead to wird ebenfalls eingefügt.Jeder Buchstabe der Kopie von
R
wird so angepasst, dass er mit dem des Streichholzes übereinstimmt, woraufhin er aus dem Arbeitsbereich verschoben wird, damit der nächste Buchstabe verarbeitet werden kann, bis entweder die Kopie vonR
oder der Streichholz keine Buchstaben mehr aufweist.Wenn die
R
Anzahl der Buchstaben in der Kopie nicht mehr ausreicht, werden vor dem Rest der Übereinstimmung 4 neue Zeilen eingefügt. Löschen Sie sie daher. Andernfalls bleiben Kopien übrigR
, die mit den nicht übereinstimmenden Teilen der Eingabe verknüpft werden müssen, um das Ergebnis zu erzielen.quelle
APL (Dyalog) ,
757372 BytesFordert zur Eingabe von
T
,R
undF
in dieser Reihenfolge auf.R
muss im Dyalog-Transformationsformat undF
im PCRE-Format angegeben werden.Probieren Sie es online!
⍞
Eingabeaufforderung fürT
⊢
ergeben, dass (trennt 1 undT
)⍞⎕R(
...)⍠1
Prompt fürF
und R eplace Einstimmungen mit dem Ergebnis der folgenden Funktion:⍞∘{…}
leiten Sie eine monadische Funktion ab, indem Sie das angeforderteR
Argument als linkes Argument verknüpfen mit:≢⍺
Zählen Sie die Anzahl der Buchstaben inR
⍺⍵.Match↑¨⍨
nimm so viele Buchstaben von jedem vonR
und die Übereinstimmung⍺
ist das linke Argument, das wirR
als gebunden haben .⍵
ist ein Namespace, in demMatch
die aktuell gefundene Zeichenfolge enthalten ist.↑
mische diese beiden zu einer zweireihigen Matrixd←
speichern alsd
(
…)
Wenden darauf folgende implizite Funktion an:819⌶
Kleinbuchstaben (Mnemonik: 819 sieht aus wie Big )l←
Speichern Sie diese Funktion alsl
d≠
Boolescher Wert, bei demd
sich der Wert unterscheidet (dh 0/1 für jeden Klein- / Großbuchstaben)(
…)
Wenden darauf folgende implizite Funktion an:≠⌿
vertikales XOR(
…)∧
Boolesches AND mit folgendem Array:l⎕A
Kleinbuchstaben A lphabet⎕A,
voranstellen A lphabetd∊
Boolescher Wert für jeden Buchstaben in d, ob ein Mitglied davon (dh ob ein Buchstabe)⊢⌿
letzte Zeile, dh für das Zeichen der Übereinstimmung, ob es sich um einen Buchstaben handelt1∘⌷≠
XOR mit der ersten Zeile, dh ob jedes Zeichen inR
Großbuchstaben geschrieben ist(
…)l¨⍨
Benutze das, um jeden Buchstaben von:⊣⌿
die erste Reihe, dhR
* Byteanzahl für Dyalog Classic unter Verwendung von
⎕OPT
anstelle von⍠
.quelle
Perl 5 , 108 Bytes
107 Byte Code + 1 für
-p
.Probieren Sie es online!
quelle
Zurückgezogen. Doms Antwort schlägt es bei weitem.
# Perl 5 , 136 + 1 (-p) = 137 BytesProbieren Sie es online!
machte einen großen Schnitt nach @ Dom Hastings erwähnt
\Q
# Perl 5 , 176 + 1 (-p) = 177 BytesProbieren Sie es online!
quelle
Power Shell , 190 Byte
Probieren Sie es online!
Erläuterung:
Der Ersetzungsskriptblock führt Folgendes aus:
Testfälle:
quelle
TXR Lisp, 285 Bytes
Konventionell formatiertes Original:
quelle
JavaScript, 177 Bytes
Code-Snippet anzeigen
Weniger golfen:
47 Bytes stammen aus dieser Regex-Escape-Funktion, da das Programm Symbole verarbeiten muss. :(
quelle
Python 2 ,
193200 BytesProbieren Sie es online!
quelle
Python 3 , 183 Bytes
Probieren Sie es online!
re.split
+ Behalte alle geraden Elemente bei und ersetze alle ungeraden Elemente durch die korrekte Transformation des Ersetzungsstrings:quelle
C (GCC) ,
210211207189 BytesMusste ein Byte hinzufügen, um einen Fehler mit der Großschreibung für den Testfall "BrainFriend" zu beheben
Wow war das langweilig ... Jetzt ein paar Bytes weggolfen
Probieren Sie es online!
quelle
*(p=f)
wenn du esp=c=t
gleich danach einstellst ? Ich habe es mit just versucht*f
und es hat nicht funktioniert, daher wird es nicht sofort überschrieben.*((char*)f)
? Cool!C # (Mono C # -Compiler) , 241 Byte
Probieren Sie es online!
quelle
Action<string,string,string> r =
Teil