Inspirado por esta pregunta de CR (por favor no me mates por navegar por CR)
Especificaciones
Las probabilidades de escribir mal una palabra son:
- 1/3 del tiempo no cambia la salida
- 1/3 de las veces elimina un personaje aleatorio
- 1/3 del tiempo duplica un carácter aleatorio
La posibilidad de eliminar / duplicar un carácter dado en la entrada debe ser la misma para todos los caracteres.
Si dos caracteres consecutivos son iguales (distingue entre mayúsculas y minúsculas), la probabilidad de que uno de ellos se modifique debería ser la misma que si fueran un solo carácter. Es decir, las salidas para AA
(que son AA
o A
o AAA
) todo debe tener la misma probabilidad.
La entrada solo contendrá letras para simplificar.
Ejemplos
La primera línea es de entrada, las siguientes líneas son todos los errores ortográficos posibles. Cada línea debe tener la misma probabilidad de salida, la entrada se excluye en los ejemplos pero aún debe tener una probabilidad de salida de 1/3.
foo
fo
oo
ffoo
fooo
PPCG
PPC
PPG
PCG
PPPCG
PPCCG
PPCGG
foo
: si elimina un carácter, podría convertirse en (-f) oo, f (-o) o y fo (-o). Entonces fo
debería ser el doble de probable oo
, pero usted dice que cada línea tiene la misma probabilidad.
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.