Вдохновленный этим вопросом 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.