La tâche
Ecrivez un programme ou une fonction qui, à partir de trois chaînes, A, B, Cproduit une chaîne de sortie dans laquelle chaque instance de Bin Aa é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 Bin A(choisies avec avidité de gauche à droite) sont remplacées par Cjusqu'à ce Bqu'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).
Bne sera jamais une chaîne vide, tandis queAetCpourrait l'être.- Les chaînes doivent être considérées comme du texte en clair, vous ne pouvez pas par exemple traiter
Bcomme 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
((())())())/()/