6
ho trovato questo pezzo di codice che calcola Levenshtein's distance tra una risposta e una supposizione:Levenshtein distanza C# conteggio tipo di errore
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];
}
ma ho bisogno di un modo per fare un conteggio per la quantità di volte si verifica ogni errore. C'è un modo semplice per implementarlo?
Ho provato questo con un esempio di "ciao" e "ciao" e si aggiunge su eliminazioni e inserimenti quando è corretto. Questo è il genere di cose di cui ho bisogno, ma non sono sicuro che questo bit funzioni esattamente! – user1988332
La cancellazione e l'inserimento entrambi sputano il numero 9 quando "ciao" è corretto? – user1988332
Il problema di base è che ho frainteso ciò che stava accadendo. Nel codice, si desidera solo incrementare le cancellazioni, le inserzioni, ecc. Quando 'i == j'. Almeno, penso che sia questo il problema. Potrebbe essere necessario sperimentarlo. Ho apportato la modifica al mio codice. –