Terinspirasi oleh pertanyaan CR ini (tolong jangan bunuh saya karena menjelajahi CR)
Spec
Peluang salah mengeja kata adalah:
- 1/3 dari waktu tidak mengubah output
- 1/3 dari waktu menghapus karakter acak
- 1/3 dari waktu duplikat karakter acak
Kesempatan untuk menghapus / menduplikasi karakter yang diberikan dalam input harus sama untuk semua karakter.
Jika dua karakter berurutan adalah sama (peka huruf besar kecil), kemungkinan salah satu dari mereka harus diubah sama seperti jika mereka adalah satu karakter. Yaitu output untuk AA
(yang AA
atau A
atau AAA
) semua harus memiliki probabilitas yang sama.
Masukan hanya akan berisi huruf untuk kesederhanaan.
Contohnya
Baris pertama adalah input, baris berikut semuanya kemungkinan salah eja. Setiap baris harus memiliki probabilitas yang sama untuk menjadi output, input tidak termasuk dalam contoh tetapi masih harus memiliki probabilitas 1/3 dari output.
foo
fo
oo
ffoo
fooo
PPCG
PPC
PPG
PCG
PPPCG
PPCCG
PPCGG
foo
: jika Anda menghapus karakter, karakter itu bisa menjadi (-f) oo, f (-o) o, dan fo (-o). Jadi fo
harus dua kali lebih mungkin oo
, tetapi Anda mengatakan setiap baris memiliki probabilitas yang sama.
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.