Exemplo n.º 1
0
        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);
        }