Added commands.js and editDistance function

Created commands.js for command related functions. Also
added edit distance calculation for error correction.
master
Peery 7 years ago committed by lub
parent 4c45ae919d
commit 795eac52f7

@ -0,0 +1,34 @@
// Compute the edit distance between the two given strings
function getEditDistance(sourceString, targetString) {
if (sourceString.length === 0) return targetString.length;
if (targetString.length === 0) return sourceString.length;
let matrix = [];
// increment along the first column of each row
for (let i = 0; i <= targetString.length; i++) {
matrix[i] = [i];
}
// increment each column in the first row
for (let j = 0; j <= sourceString.length; j++) {
matrix[0][j] = j;
}
// Fill in the rest of the matrix
for (let i = 1; i <= targetString.length; i++) {
for (let j = 1; j <= sourceString.length; j++) {
let cost = 1;
if (targetString.charAt(i-1) === sourceString.charAt(j-1)) {
cost = 0;
}
matrix[i][j] = Math.min(matrix[i-1][j-1] + cost, // substitution
matrix[i][j-1] + 1, // insertion
matrix[i-1][j] + 1 // deletion
);
}
}
return matrix[targetString.length][sourceString.length];
}
//console.log(getEditDistance("saturday", "sunday")); //sollte 3 ergeben