Inspiré par cette question CR (veuillez ne pas me tuer pour avoir parcouru CR)
Spec
Les probabilités d'orthographe d'un mot sont les suivantes:
- 1/3 du temps ne change pas la sortie
- 1/3 du temps supprime un caractère aléatoire
- 1/3 du temps dupliquer un caractère aléatoire
La possibilité de supprimer / dupliquer un caractère donné dans l'entrée doit être la même pour tous les caractères.
Si deux caractères consécutifs sont identiques (sensibles à la casse), la probabilité que l'un d'entre eux soit modifié doit être la même que s'il s'agit d'un seul caractère. C'est-à-dire que les sorties pour AA
(qui sont AA
ou A
ou AAA
) devraient toutes avoir la même probabilité.
L'entrée ne contiendra que des lettres pour plus de simplicité.
Exemples
La première ligne est entrée, les lignes suivantes sont toutes des fautes d'orthographe possibles. Chaque ligne doit avoir la même probabilité d'être sortie, l'entrée est exclue dans les exemples mais elle doit toujours avoir une probabilité 1/3 de sortie.
foo
fo
oo
ffoo
fooo
PPCG
PPC
PPG
PCG
PPPCG
PPCCG
PPCGG
foo
: si vous supprimez un caractère, il pourrait devenir (-f) oo, f (-o) o et fo (-o). Cela fo
devrait donc être deux fois plus probable oo
, mais vous dites que chaque ligne a une probabilité égale.
If two consecutive characters are the same (case-sensitive), the probability of one of them being modified should be the same as if they are one character. I.e. the outputs for AA (which are AA or A or AAA) should all have the same probability.