using System.Collections;
public static void Main()
string WordToCheck = "ECM".ToLower();
Console.WriteLine("Searching for ( " + WordToCheck + " )");
Console.WriteLine(Fuzz.Ratio("DVS:ENGSTEREOBULSTEREO", "DVS:BULSTEREO"));
Console.WriteLine("Answer should be option G as it has the actual word");
var test = FuzzyMatch.FuzzyMatcher.FuzzyMatch("DVS:ENGSTEREOBULSTEREO", "DVS:BULSTEREO");
Console.WriteLine("----------------------------- FuzzySharp -----------------------------");
Console.WriteLine("Choice A " + Fuzz.Ratio(WordToCheck, "Open Electronic Notebook".ToLower()));
Console.WriteLine("Choice B " + Fuzz.Ratio(WordToCheck, "Open Voice Note".ToLower()));
Console.WriteLine("Choice C " + Fuzz.Ratio(WordToCheck, "Transcribe".ToLower()));
Console.WriteLine("Choice D " + Fuzz.Ratio(WordToCheck, "Open Company Experiement SOP".ToLower()));
Console.WriteLine("Choice E " + Fuzz.Ratio(WordToCheck, "Open Company Lab Documents".ToLower()));
Console.WriteLine("Choice F " + Fuzz.Ratio(WordToCheck, "Open Form For LIMS".ToLower()));
Console.WriteLine("Choice G " + Fuzz.Ratio(WordToCheck, "Open Form For ECM".ToLower()));
Console.WriteLine("----------------------------- LevenshteinDistance2 -----------------------------");
Console.WriteLine("Choice A " + LevenshteinDistance2(WordToCheck, "Open Electronic Notebook".ToLower()));
Console.WriteLine("Choice B " + LevenshteinDistance2(WordToCheck, "Open Voice Note".ToLower()));
Console.WriteLine("Choice C " + LevenshteinDistance2(WordToCheck, "Transcribe".ToLower()));
Console.WriteLine("Choice D " + LevenshteinDistance2(WordToCheck, "Open Company Experiement SOP".ToLower()));
Console.WriteLine("Choice E " + LevenshteinDistance2(WordToCheck, "Open Company Lab Documents".ToLower()));
Console.WriteLine("Choice F " + LevenshteinDistance2(WordToCheck, "Open Form For LIMS".ToLower()));
Console.WriteLine("Choice G " + LevenshteinDistance2(WordToCheck, "Open Form For ECM".ToLower()));
public static int Compute(string s, string t)
int[, ] d = new int[n + 1, m + 1];
for (int i = 0; i <= n; d[i, 0] = i++)
for (int j = 0; j <= m; d[0, j] = j++)
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
int cost = (t[j - 1] == s[i - 1]) ? 0 : 1;
d[i, j] = Math.Min(Math.Min(d[i - 1, j] + 1, d[i, j - 1] + 1), d[i - 1, j - 1] + cost);
public static int LevenshteinDistance2(string s, string t)
int[, ] d = new int[n + 1, m + 1];
for (int i = 0; i <= n; d[i, 0] = i++)
for (int j = 0; j <= m; d[0, j] = j++)
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
int cost = (t[j - 1] == s[i - 1]) ? 0 : 1;
d[i, j] = Math.Min(Math.Min(d[i - 1, j] + 1, d[i, j - 1] + 1), d[i - 1, j - 1] + cost);
public static float LevenshteinDistance(string a, string b)
var maxLen = Math.Max(rowLen, colLen);
if (rowLen == 0 || colLen == 0)
var v0 = new int[rowLen + 1];
var v1 = new int[rowLen + 1];
for (var i = 1; i <= rowLen; i++)
for (var j = 1; j <= colLen; j++)
for (var i = 1; i <= rowLen; i++)
var cost = (a[i - 1] == b[j - 1]) ? 0 : 1;
v1[i] = Math.Min(v0[i] + 1, Math.Min(v1[i - 1] + 1, v0[i - 1] + cost));