Prenez trois entrées, une chaîne de texte T
,; une chaîne de caractères à remplacer F
,; et une chaîne de caractères pour les remplacer par, R
. Pour chaque sous-chaîne de T
avec les mêmes caractères (insensibles à la casse) que F
, remplacez-les par les caractères dans R
. Cependant, conservez la même casse que le texte d'origine.
S'il y a plus de caractères R
que F
, les caractères supplémentaires doivent être dans le même cas que dans R
. S'il y a des chiffres ou des symboles F
, les caractères correspondants R
doivent conserver la casse qu'ils contiennent R
. F
n'apparaîtra pas nécessairement dans T
.
Vous pouvez supposer que tout le texte sera dans la plage ASCII imprimable.
Exemples
"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
la source
la source
"TeXT input", "text", "test"
"The birch canoe slid on the smooth planks", "o", " OH MY "
si drôle, mais j'ai adoré cet exemple.Réponses:
Rétine , 116 octets
Essayez-le en ligne! Explication:
Cette recherche
T
et chaque fois qu'il existe une correspondance insensible à la casse par rapport à l'anticipation deF
la correspondance est entourée d'un tas de nouvelles lignes et l'anticipationR
est également insérée.Chaque lettre de la copie de
R
est ajustée au cas où elle correspond à celle de la correspondance, après quoi elle est déplacée hors de la zone de travail afin que la lettre suivante puisse être traitée, jusqu'à ce que la copieR
ou la correspondance soit épuisée.Si la copie de
R
manque de lettres, le reste de la correspondance sera précédé de 4 nouvelles lignes, supprimez-le donc. Sinon, tout ce qui restera sera des morceaux de copies restantsR
qui doivent être concaténés avec les parties non correspondantes de l'entrée pour produire le résultat.la source
APL (Dyalog) ,
757372 octetsInvite pour
T
,R
etF
dans cet ordre.R
doit être donné au format de transformation Dyalog etF
doit être donné au format PCRE.Essayez-le en ligne!
⍞
demanderT
⊢
donner que (sépare 1 etT
)⍞⎕R(
…)⍠1
invite pourF
et R matches EPlacez avec le résultat de la fonction suivante:⍞∘{…}
dériver une fonction monadique en liant l'R
argument invité comme gauche à:≢⍺
compter le nombre de lettresR
⍺⍵.Match↑¨⍨
prenez autant de lettres de chacunR
et la correspondance⍺
est l'argument de gauche, que nous avons liéR
comme.⍵
est un espace de noms dans lequelMatch
contient la chaîne actuellement trouvée.↑
mélanger ces deux dans une matrice à deux rangéesd←
stocker sousd
(
…)
Appliquer à cela la fonction tacite suivante:819⌶
minuscule (mnémonique: 819 ressemble à gros )l←
stocker cette fonction commel
d≠
Booléen oùd
diffère (ie donne 0/1 pour chaque lettre minuscule / majuscule)(
…)
Appliquer à cela la fonction tacite suivante:≠⌿
XOR vertical(
…)∧
Booléen ET avec le tableau suivant:l⎕A
A minuscule alphabet en⎕A,
ajouter un A majusculeajouter alphabetd∊
Booléen pour chaque lettre en d si un membre de celle-ci (c'est-à-dire si une lettre)⊢⌿
dernière ligne, c.-à-d. pour le caractère du match, qu'il s'agisse d'une lettre1∘⌷≠
XOR avec la première ligne, c'est-à-dire si chaque caractère deR
est en majuscule(
…)l¨⍨
Utilisez-le pour minuscule (si 0) ou majuscule (si 1) chaque lettre de:⊣⌿
la première rangée, c.-à-d.R
* Nombre d'octets pour Dyalog Classic utilisant
⎕OPT
au lieu de⍠
.la source
Perl 5 , 108 octets
107 octets code + 1 pour
-p
.Essayez-le en ligne!
la source
Retiré. La réponse de Dom la bat de loin.
# Perl 5 , 136 + 1 (-p) = 137 octetsEssayez-le en ligne!
fait une énorme coupure après @Dom Hastings mentionné
\Q
# Perl 5 , 176 + 1 (-p) = 177 octetsEssayez-le en ligne!
la source
PowerShell , 190 octets
Essayez-le en ligne!
Explication:
Le bloc de script de remplacement fait:
Cas de test:
la source
TXR Lisp, 285 octets
Original au format conventionnel:
la source
JavaScript, 177 octets
Afficher l'extrait de code
Moins golfé:
47 octets provenaient de cette fonction d'échappement regex puisque le programme doit gérer les symboles. :(
la source
Python 2 ,
193200 octetsEssayez-le en ligne!
la source
Python 3 , 183 octets
Essayez-le en ligne!
re.split
+ conserver tous les éléments pairs et remplacer tous les éléments impairs par la transformation correcte de la chaîne de remplacement:la source
C (gcc) ,
210211207189 octetsJ'ai dû ajouter un octet pour corriger un bogue avec la mise en majuscule du testcase "BrainFriend"
Wow était-ce fastidieux ... Maintenant pour jouer au golf quelques octets
Essayez-le en ligne!
la source
*(p=f)
quand vous vous mettezp=c=t
juste après? Je l'ai essayé avec juste*f
et cela n'a pas fonctionné, donc il n'est pas immédiatement écrasé.*((char*)f)
? Cool!C # (compilateur mono C #) , 241 octets
Essayez-le en ligne!
la source
Action<string,string,string> r =
pièce