Найти все слова, отличающиеся только порядком букв в заданном файле - C#

Узнай цену своей работы

Формулировка задачи:

Есть 2 задачи: 1) найти все слова, отличающиеся только порядком букв в заданном файле. Результатом работы приложения должен быть текстовый файл, каждая строчка которого содержит одну группу слов исходного файла, например первая строка: "дог, год", вторая строка "народ, радон и т.д." и т.д. 2) Та же задача, но исходный файл большой (10 ТБ), при этом памяти немного (на приложение выделяется не более 2 ГБ). Каким будет наиболее оптимальный подход.

Решение задачи: «Найти все слова, отличающиеся только порядком букв в заданном файле»

textual
Листинг программы
   //init
            string[] init = { "init", "radon", "iint", "nodra", "nnie", "niti", "xxc", "tiin", "cxx", "tini" };
 
            //calculate
            var groups = from _ in init.AsParallel().WithExecutionMode(ParallelExecutionMode.ForceParallelism).
                         WithDegreeOfParallelism(System.Environment.ProcessorCount)
                         group _ by
                         new String((from __ in _
                                     orderby __
                                     select __).ToArray());
 
            var groupsWithUniqKeys = new Dictionary<string, List<string>>(short.MaxValue);
            foreach (var g in groups)
                foreach (var val in g)
                    if (groupsWithUniqKeys.ContainsKey(g.Key)) groupsWithUniqKeys[g.Key].Add(val);
                    else
                        groupsWithUniqKeys.Add(g.Key, new List<string>(10) { val });
 
            var result = from _ in groupsWithUniqKeys.AsParallel().WithExecutionMode(ParallelExecutionMode.ForceParallelism).
                          WithDegreeOfParallelism(System.Environment.ProcessorCount)
                         select new { Key = _.Key, Values = _.Value.Distinct() };
 
            //result
            foreach (var t in result)
                foreach (var word in t.Values) Console.WriteLine("Key group=" + t.Key + "   " + word);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы