La tarea
Escribir un programa o función que con tres cadenas A, B, C
produce una cadena de salida donde cada instancia de B
in A
ha sido sustituida recursivamente con C
. Sustituir recursivamente significa repetir una sustitución en la que en cada paso todas las instancias no superpuestas de B
in A
(elegidas con avidez de izquierda a derecha) se reemplazan por C
hasta que B
ya no estén contenidas A
.
De entrada y salida
- Puede utilizar cualquiera de los métodos predeterminados de E / S .
- Las cadenas contendrán solo caracteres ASCII imprimibles (y pueden contener cualquiera de ellos).
B
Nunca será una cadena vacía, mientras queA
yC
que podría ser.- Las cadenas deben considerarse texto plano, por ejemplo, no puede tratarse
B
como un patrón Regex. - Algunas combinaciones de entradas nunca terminarán. Su programa puede hacer cualquier cosa en esos casos.
Casos de prueba
Estos están en el formato: A/B/C\nOutput
Hello, world!/world!/PPCG
Hello, PPCG
Uppercase is up/up/down
Uppercase is down
ababababa/aba/ccc
cccbcccba
delete/e/{empty string}
dlt
{empty string}/no/effect
{empty string}
llllrrrr/lr/rl
rrrrllll
+-+-+-+/+-+/+
+
ababababa/aba/bada
badabbadbada
abaaba/aba/ab
abb
((())())())/()/{empty string}
)
Ejemplos que no terminan:
grow/ow/oow
loop/lo/lo
downpercase is down
((())())())/()/