6
bir cevap ve bir tahmin arasında Levenshtein's distance hesaplar bu kod biraz bulundu:Levenshtein mesafesi C# sayım hata türü
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];
}
Ama her hata oluşur kez tutarda bir sayımını yapmak için bir yol gerekir. Bunu uygulamak için kolay bir yolu var mı? operasyonların her biri için sayaçlar ekleyecek olabilir gibi
Ben "Merhaba" ve bir örnekle denedim doğru olduğunda "Merhaba" ve delesyonlar ve eklemeler üzerinde ekler. Bu, bu bitin tam olarak çalıştığından emin olmam gereken bir şey! – user1988332
Silme ve ekleme işlemi "merhaba" doğru olduğunda 9 sayısını çıkarır mı? – user1988332
Temel sorun, ne olduğunu yanlış anladım. Kodda, sadece silme, ekleme, vb. Arttırmak istediğinizde, i == j'. En azından, sanırım sorun bu. Bununla denemelisin. Değişikliği koduma yaptım. –