A tarefa
Escreva um programa ou função que, com três seqüências de caracteres, A, B, C
produza uma sequência de saída em que cada instância de B
in A
foi recursivamente substituída por C
. Substituir recursivamente significa repetir uma substituição em que em cada etapa todas as instâncias não sobrepostas de B
in A
(escolhidas avidamente da esquerda para a direita) são substituídas por C
até que B
não esteja mais contida A
.
Entrada / Saída
- Você pode usar qualquer um dos métodos padrão para I / O .
- As seqüências conterão apenas caracteres ASCII imprimíveis (e podem conter qualquer um deles).
B
nunca será uma string vazia, enquantoA
eC
pode ser.- Seqüências de caracteres devem ser consideradas texto sem formatação, você não pode, por exemplo, tratar
B
como um padrão Regex. - Algumas combinações de entradas nunca terminam. Seu programa pode fazer qualquer coisa nesses casos.
Casos de teste
Estes estão no 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}
)
Exemplos que não terminam:
grow/ow/oow
loop/lo/lo
downpercase is down
((())())())/()/