6
znalazłem ten kawałek kodu, który oblicza Levenshtein's distance pomiędzy odpowiedzią i zgadnę:Odległość Levenshteina c count # typ błędu
int CheckErrors(string Answer, string Guess)
{
int[,] d = new int[Answer.Length + 1, Guess.Length + 1];
for (int i = 0; i <= Answer.Length; i++)
d[i, 0] = i;
for (int j = 0; j <= Guess.Length; j++)
d[0, j] = j;
for (int j = 1; j <= Guess.Length; j++)
for (int i = 1; i <= Answer.Length; i++)
if (Answer[i - 1] == Guess[j - 1])
d[i, j] = d[i - 1, j - 1]; //no operation
else
d[i, j] = Math.Min(Math.Min(
d[i - 1, j] + 1, //a deletion
d[i, j - 1] + 1), //an insertion
d[i - 1, j - 1] + 1 //a substitution
);
return d[Answer.Length, Guess.Length];
}
Ale muszę sposób to zrobić licznik na kwotę czasami występuje każdy błąd. Czy istnieje prosty sposób na wdrożenie tego?
Próbowałem to na przykładzie „Hello” i „hello” i dodaje się na delecji i insercji, gdy jest on poprawny. Tego właśnie potrzebuję, ale nie jestem pewien, czy ten dokładnie działa! – user1988332
Usunięcie i wstawienie wypluwają numer 9, gdy "cześć" jest poprawna? – user1988332
Podstawowym problemem jest to, że źle zrozumiałem, co się dzieje. W kodzie chcesz tylko zwiększać liczbę usunięć, wstawień itp., Gdy 'i == j'. Przynajmniej myślę, że to właśnie jest problem. Być może będziesz musiał z nim eksperymentować. Wprowadziłem zmianę do mojego kodu. –