Натхненний цим питанням CR (будь ласка, не вбивайте мене за перегляд CR)
Спец
Ймовірність неправильного написання слова:
- 1/3 часу не змінюють вихід
- 1/3 часу видаліть випадковий символ
- 1/3 часу дублює випадковий символ
Шанс для видалення / дублювання заданого символу у вхідному сигналі повинен бути однаковим для всіх символів.
Якщо два послідовних символи однакові (залежно від регістру), ймовірність зміни одного з них повинна бути такою ж, як якщо б вони були одним символом. Тобто виходи для AA
(які є AA
або A
чи AAA
) всі повинні мати однакову ймовірність.
Вхід буде містити лише літери для простоти.
Приклади
Перший рядок вводиться, наступні рядки - це всі можливі неправильні написання. Кожен рядок повинен мати однакову ймовірність виведення, вхідний приклад виключений у прикладах, але він все одно повинен мати 1/3 ймовірності виведення.
foo
fo
oo
ffoo
fooo
PPCG
PPC
PPG
PCG
PPPCG
PPCCG
PPCGG
foo
: якщо ви видалите символ, він може стати (-f) oo, f (-o) o і fo (-o). Так fo
має бути вдвічі більше oo
, але ви кажете, що кожен рядок має однакову ймовірність.
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.