Tome tres entradas, una cadena de texto T
; una cadena de caracteres para reemplazar F
; y una cadena de caracteres para reemplazarlos con R
,. Para cada subcadena de T
con los mismos caracteres (sin distinción entre mayúsculas y minúsculas) que F
, reemplácelos con los caracteres en R
. Sin embargo, mantenga el mismo caso que el texto original.
Si hay más caracteres en R
que F
, los caracteres adicionales deben ser el mismo caso, ya que están en R
. Si hay números o símbolos adentro F
, entonces los caracteres correspondientes R
deben mantener el caso en el que están R
. F
no necesariamente aparecerá en T
.
Puede suponer que todo el texto estará en el rango ASCII imprimible.
Ejemplos
"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
Andrés
fuente
fuente
"TeXT input", "text", "test"
"The birch canoe slid on the smooth planks", "o", " OH MY "
tan gracioso, pero me encantó ese ejemplo.Respuestas:
Retina , 116 bytes
Pruébalo en línea! Explicación:
Esto busca
T
y cada vez que hay una coincidencia entre mayúsculas y minúsculas contra la búsqueda anticipada,F
la coincidencia se rodea de un montón de nuevas líneas y la búsqueda anticipadaR
también se inserta.Cada letra de la copia de
R
se ajusta en caso de que coincida con la de la coincidencia, después de lo cual se mueve fuera del área de trabajo para que se pueda procesar la siguiente letra, hasta que la copiaR
o la coincidencia se quede sin letras.Si la copia de se
R
queda sin letras, el resto del partido estará precedido por 4 líneas nuevas, así que bórrelo. De lo contrario, todo lo que quede serán piezas sobrantes de copias de lasR
cuales deben concatenarse con las partes no coincidentes de la entrada para producir el resultado.fuente
APL (Dyalog) ,
757372 bytesIndicaciones para
T
,R
yF
en ese orden.R
debe darse en formato de transformación Dyalog yF
debe darse en formato PCRE.Pruébalo en línea!
⍞
solicitarT
⊢
rendimiento que (separa 1 yT
)⍞⎕R(
...)⍠1
prontas paraF
y R partidos EColoque con el resultado de la siguiente función:⍞∘{…}
deriva una función monádica al vincular elR
argumento solicitado como izquierdo a:≢⍺
cuenta el número de letras enR
⍺⍵.Match↑¨⍨
tome esa cantidad de letras de cada unaR
y la coincidencia⍺
es el argumento de la izquierda, que vinculamosR
como.⍵
es un espacio de nombres en el queMatch
contiene la cadena encontrada actualmente.↑
mezclar esos dos en una matriz de dos filasd←
almacenar comod
(
...)
Aplica la siguiente función tácita a eso:819⌶
minúscula (mnemónica: 819 parece grande )l←
almacenar esa función comol
d≠
Booleano donded
difiere (es decir, da 0/1 para cada letra minúscula / mayúscula)(
…)
Aplica la siguiente función tácita a eso:≠⌿
XOR vertical(
...)∧
booleano Y con la siguiente matriz:l⎕A
Un alfabeto en minúsculas⎕A,
anteponer un alfabeto en mayúscula Ad∊
Booleano para cada letra en d si un miembro de eso (es decir, si una letra)⊢⌿
última fila, es decir, para el carácter del partido, ya sea una letra1∘⌷≠
XOR con la primera fila, es decir, si cada carácter deR
es mayúscula(
…)l¨⍨
Use eso en minúsculas (si es 0) o en mayúsculas (si es 1) cada letra de:⊣⌿
la primera fila, es decirR
* Recuento de bytes para Dyalog Classic usando en
⎕OPT
lugar de⍠
.fuente
Perl 5 , 108 bytes
Código de 107 bytes + 1 para
-p
.Pruébalo en línea!
fuente
Retirado. La respuesta de Dom es mucho mejor.
# Perl 5 , 136 + 1 (-p) = 137 bytesPruébalo en línea!
hizo un gran corte después de que @Dom Hastings mencionara
\Q
# Perl 5 , 176 + 1 (-p) = 177 bytesPruébalo en línea!
fuente
PowerShell , 190 bytes
Pruébalo en línea!
Explicación:
El bloque de script de reemplazo hace:
Casos de prueba:
fuente
TXR Lisp, 285 bytes
Original con formato convencional:
fuente
JavaScript, 177 bytes
Mostrar fragmento de código
Menos golfizado:
47 bytes provienen de esta función de escape regex ya que el programa tiene que manejar símbolos. :(
fuente
Python 2 ,
193200 bytesPruébalo en línea!
fuente
Python 3 , 183 bytes
Pruébalo en línea!
re.split
+ mantenga todos los elementos pares y reemplace todos los elementos impares por la transformación correcta de la cadena de reemplazo:fuente
C (gcc) ,
210211207189 bytesTuve que agregar un byte para corregir un error con las mayúsculas para el caso de prueba "BrainFriend"
Wow, esto era tedioso ... Ahora, para jugar al golf, algunos bytes
Pruébalo en línea!
fuente
*(p=f)
cuando establecep=c=t
justo después? Lo probé solo*f
y no funcionó, por lo que no se sobrescribe de inmediato.*((char*)f)
? ¡Frio!C # (compilador Mono C #) , 241 bytes
Pruébalo en línea!
fuente
Action<string,string,string> r =
parte