L'obiettivo
Scrivere un programma o una funzione che danno tre stringhe A, B, C
produce una stringa di output in cui ogni istanza di B
in A
è stata sostituita in modo ricorsivo C
. Sostituire in modo ricorsivo significa ripetere una sostituzione in cui ad ogni passo tutte le istanze non sovrapposte di B
in A
(scelte avidamente da sinistra a destra) vengono sostituite con C
finché B
non è più contenuto A
.
Input Output
- È possibile utilizzare uno qualsiasi dei metodi predefiniti per l'I / O .
- Le stringhe conterranno solo caratteri ASCII stampabili (e potrebbero contenere uno qualsiasi di essi).
B
non sarà mai una stringa vuota, mentreA
eC
potrebbe essere.- Le stringhe devono essere considerate in chiaro, ad esempio non è possibile trattare
B
come un modello Regex. - Alcune combinazioni di input non termineranno mai. Il tuo programma può fare qualsiasi cosa in questi casi.
Casi test
Questi sono nel 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}
)
Esempi che non terminano:
grow/ow/oow
loop/lo/lo
downpercase is down
((())())())/()/