Ispirato da questa domanda CR (per favore, non uccidermi per aver cercato CR)
Spec
Le probabilità di scrivere male una parola sono:
- 1/3 del tempo non modifica l'output
- 1/3 del tempo rimuove un personaggio casuale
- 1/3 del tempo duplica un personaggio casuale
La possibilità di rimuovere / duplicare un determinato carattere nell'input dovrebbe essere la stessa per tutti i caratteri.
Se due caratteri consecutivi sono uguali (distinzione tra maiuscole e minuscole), la probabilità che uno di essi venga modificato dovrebbe essere uguale a quella di un carattere. Vale a dire le uscite per AA
(che sono AA
o A
o AAA
) dovrebbero avere tutte la stessa probabilità.
L'input conterrà solo lettere per semplicità.
Esempi
Viene immessa la prima riga, le seguenti righe sono tutti possibili errori di ortografia. Ogni riga dovrebbe avere la stessa probabilità di essere emessa, l'ingresso è escluso negli esempi ma dovrebbe comunque avere una probabilità 1/3 di uscita.
foo
fo
oo
ffoo
fooo
PPCG
PPC
PPG
PCG
PPPCG
PPCCG
PPCGG
foo
: se rimuovi un personaggio potrebbe diventare (-f) oo, f (-o) o, e fo (-o). Quindi fo
dovrebbe essere il doppio delle probabilità rispetto a oo
, ma dici che ogni riga ha la stessa probabilità.
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.