Inspirado por esta pergunta de CR (por favor, não me mate por navegar por CR)
Spec
As probabilidades de escrever incorretamente uma palavra são:
- 1/3 do tempo não altera a saída
- 1/3 do tempo remove um caractere aleatório
- 1/3 do tempo duplicam um caracter aleatório
A chance de remover / duplicar um determinado caractere na entrada deve ser a mesma para todos os caracteres.
Se dois caracteres consecutivos forem iguais (diferencia maiúsculas de minúsculas), a probabilidade de um deles ser modificado deve ser a mesma que se fosse um caractere. Ou seja, as saídas para AA
(que são AA
ou A
ou AAA
) devem ter a mesma probabilidade.
A entrada conterá apenas letras para simplificar.
Exemplos
A primeira linha é inserida, as seguintes linhas são todos os erros ortográficos possíveis. Cada linha deve ter a mesma probabilidade de saída, a entrada é excluída nos exemplos, mas ainda deve ter uma probabilidade de saída de 1/3.
foo
fo
oo
ffoo
fooo
PPCG
PPC
PPG
PCG
PPPCG
PPCCG
PPCGG
foo
: se você remover um personagem, ele poderá se tornar (-f) oo, f (-o) o e fo (-o). Portanto, fo
deve ser duas vezes mais provável que oo
, mas você diz que cada linha tem igual probabilidade.
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.