protected List <PatternNodePPA> Compute(PatternNodePPA node, IPermutationsCollection avoidedPermutations, int depthComputed, ResultPPA result) { List <PatternNodePPA> nodes = new List <PatternNodePPA>(); List <PatternNodePPA> newNodes = new List <PatternNodePPA>(); IPermutationDictionary <ExtensionMap> extensionMaps = new PermutationDictionary <ExtensionMap>(); nodes.Add(node); for (int i = 0; i < depthComputed; i++) { extensionMaps = ExtractExtensionMaps(nodes); foreach (var nodeProcessed in nodes) { newNodes.AddRange(nodeProcessed.ComputeChildren(extensionMaps, avoidedPermutations)); } result.ProcessNodes(newNodes); nodes = newNodes; newNodes = new List <PatternNodePPA>(); } return(nodes); }
protected PermutationDictionary <ExtensionMap> ExtractExtensionMaps(List <PatternNodePPA> nodes) { PermutationDictionary <ExtensionMap> extensionMaps = new PermutationDictionary <ExtensionMap>(); foreach (var node in nodes) { extensionMaps.Add(node.Permutation, node.ExtensionMap); } return(extensionMaps); }