public IEnumerable <string> Find(string chars) { var result = new List <string>(); var wordChars = new WordCharacters(chars); foreach (var child in Children.Values) { child.Visit(wordChars.Clone(), result); } return(result); }
internal void Visit(WordCharacters chars, List <string> results) { if (chars.Take(Current)) { if (IsWord) { results.Add(chars.Word); } foreach (var child in Children.Values) { child.Visit(chars.Clone(), results); } } }
public WordCharacters(WordCharacters chars) { _remainingChars = new List <char>(chars._remainingChars); _takenChars = new List <char>(chars._takenChars); }