La tâche
Ecrivez un programme ou une fonction qui, à partir de trois chaînes, A, B, C
produit une chaîne de sortie dans laquelle chaque instance de B
in A
a été récursivement remplacée par C
. Substituer récursivement signifie répéter une substitution où à chaque étape toutes les instances non chevauchantes de B
in A
(choisies avec avidité de gauche à droite) sont remplacées par C
jusqu'à ce B
qu'elles ne soient plus contenues dans A
.
Entrée sortie
- Vous pouvez utiliser l' une des méthodes par défaut pour les E / S .
- Les chaînes ne contiendront que des caractères ASCII imprimables (et peuvent contenir n'importe lequel d'entre eux).
B
ne sera jamais une chaîne vide, tandis queA
etC
pourrait l'être.- Les chaînes doivent être considérées comme du texte en clair, vous ne pouvez pas par exemple traiter
B
comme un modèle Regex. - Certaines combinaisons d'entrées ne se termineront jamais. Votre programme peut tout faire dans ces cas.
Cas de test
Ce sont au format: 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}
)
Exemples qui ne se terminent pas:
grow/ow/oow
loop/lo/lo
downpercase is down
((())())())/()/