Найти все слова, отличающиеся только порядком букв в заданном файле - 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д