Zainspirowany tym pytaniem CR (proszę nie zabijaj mnie za przeglądanie CR)
Spec
Prawdopodobieństwa błędnej pisowni słowa to:
- 1/3 czasu nie zmienia wyniku
- 1/3 czasu usuwa losową postać
- 1/3 czasu duplikuje losową postać
Szansa na usunięcie / zduplikowanie danego znaku na wejściu powinna być taka sama dla wszystkich znaków.
Jeśli dwa kolejne znaki są takie same (rozróżnia małe i wielkie litery), prawdopodobieństwo modyfikacji jednego z nich powinno być takie samo, jak gdyby były jednym znakiem. To znaczy, że wyniki dla AA
(które są AA
lub A
lub AAA
) powinny mieć takie samo prawdopodobieństwo.
Wprowadzanie będzie zawierać tylko litery dla uproszczenia.
Przykłady
Wprowadzany jest pierwszy wiersz, kolejne wiersze to wszystkie możliwe błędy ortograficzne. Każda linia powinna mieć takie samo prawdopodobieństwo wyjścia, dane wejściowe są wykluczone w przykładach, ale nadal powinno mieć 1/3 prawdopodobieństwa wyjścia.
foo
fo
oo
ffoo
fooo
PPCG
PPC
PPG
PCG
PPPCG
PPCCG
PPCGG
foo
: jeśli usuniesz znak, może on stać się (-f) oo, f (-o) o i fo (-o). Tak fo
powinno być dwa razy częściej oo
, ale trzeba powiedzieć, każda linia ma równe prawdopodobieństwo.
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.