Имеется код, представляющий из себя словарь и цикл. Принцип работы прост: вводится слово из словаря с ОДНОЙ ошибкой, а благодаря циклу выводится правильное написание данного слова из того же словаря. Так вот проблема как раз в том, что слово проверятся если в нем допущена лишь одна ошибка, и если длина слова совпадает с длиной правильного варианта его написания (например, слово програма с одной "м" не будет засчитано за ошибку). Прошу помочь сделать так, чтоб программа так же исправляла слова с более чем одной ошибкой, а так же исправляла слова, длина которых не идентична длине правильной вариации написания данного слова. Вот сам код:
class Program
{
static void Main(string[] args)
{
string[] slovar = {"Здравствуйте","вот","моя","программа",
"предназначенная","для","проверки","орфографии","в",
"тексте","состоящем","из","заданного","набора","слов",
"шла","Саша","по","шоссе","так","же","дабы","словарь","казался","больше","добавим","ещё","парочку"};
Console.WriteLine("Введите слово из словаря(с ошибкой):");
string s = Console.ReadLine();
var closestWords = slovar
.Select(x => new { orig = s, dict = x, Distance = Diff(x, s) })
.GroupBy(x => x.Distance)
.OrderBy(x => x.Key)
.Take(1)
.SelectMany(x => x.Select(z => z.dict))
.ToArray();
Console.WriteLine("Вы ввели {s}");
Console.WriteLine("Самые близкие слова {string.Join(" ,", closestWords)}");
Console.ReadLine();
}
}