




Я не уверен, правильно ли я понял ваш вопрос, но это может помочь:
List<string> GetWords(IEnumberable<char> characters) {
char[] chars = characters.Distinct().ToArray();
List<string> words = new List<string>(chars.Length*chars.Length);
foreach (char i in chars)
foreach (char j in chars)
words.Add(i.ToString() + j.ToString());
return words;
}
Вы говорите о поиске настоящих двухсимвольных слов, которые можно составить из любой комбинации списка символов?
В этом случае вам нужно написать алгоритм, который может выработать все возможные комбинации из предоставленных букв, и для каждой комбинации попробуйте его (и наоборот) с IDictionary, который действует как настоящий словарь реальных двухбуквенных слов. .
Непроверенный код:
IDictionary<string, string> dictionary = GetRealTwoLetterWordDictionary();
char[] availableChars = new char[] { 'a', 's', 't' };
string[] combinations = GetAllCombinations(availableChars);
IList<string> results = new List<string>();
foreach (string combination in combinations)
{
if (dictionary.ContainsKey(combination)))
{
results.Add(combination);
}
string reversed = combination.Reverse();
if (dictionary.ContainsKey(reversed)))
{
results.Add(reversed);
}
}