Inspiriert von dieser CR-Frage (bitte töte mich nicht, wenn ich CR durchstöbere)
Spec
Die Wahrscheinlichkeiten für einen Rechtschreibfehler sind:
- 1/3 der Zeit ändert sich nicht die Ausgabe
- 1/3 der Zeit entfernt ein zufälliges Zeichen
- 1/3 der Zeit dupliziert ein zufälliges Zeichen
Die Chance, ein bestimmtes Zeichen in der Eingabe zu entfernen / zu duplizieren, sollte für alle Zeichen gleich sein.
Wenn zwei aufeinanderfolgende Zeichen gleich sind (Groß- und Kleinschreibung beachten), sollte die Wahrscheinlichkeit, dass eines von ihnen geändert wird, so sein, als ob es sich um ein Zeichen handelt. Dh die Ausgänge für AA
(die AA
oder A
oder sind AAA
) sollten alle die gleiche Wahrscheinlichkeit haben.
Die Eingabe enthält der Einfachheit halber nur Buchstaben.
Beispiele
Die erste Zeile wird eingegeben, die folgenden Zeilen sind mögliche Rechtschreibfehler. Jede Zeile sollte die gleiche Ausgabewahrscheinlichkeit haben, die Eingabe wird in den Beispielen ausgeschlossen, sollte jedoch eine Ausgabewahrscheinlichkeit von 1/3 haben.
foo
fo
oo
ffoo
fooo
PPCG
PPC
PPG
PCG
PPPCG
PPCCG
PPCGG
foo
: Wenn Sie ein Zeichen entfernen, kann es zu (-f) oo, f (-o) o und fo (-o) werden. Sollte fo
also doppelt so wahrscheinlich sein oo
, aber du sagst, jede Zeile hat die gleiche Wahrscheinlichkeit.
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.