c# count levenshtein-distance

Levenshtein distancia c#tipo de error de recuento



count levenshtein-distance (1)

Encontré este fragmento de código que calcula la distancia de Levenshtein entre una respuesta y una suposición:

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]; }

Pero necesito una forma de contar la cantidad de veces que ocurre cada error. ¿Hay alguna manera fácil de implementar eso?


Parece que podría agregar contadores para cada una de las operaciones:

if (Answer[i - 1] == Guess[j - 1]) d[i, j] = d[i - 1, j - 1]; //no operation else { int del = d[i-1, j] + 1; int ins = d[i, j-1] + 1; int sub = d[i-1, j-1] + 1; int op = Math.Min(Math.Min(del, ins), sub); d[i, j] = op; if (i == j) { if (op == del) ++deletions; else if (op == ins) ++insertions; else ++substitutions; } }