Пример #1
0
        public static LinkCombination Clone(LinkCombination linkCombination)
        {
            LinkCombination newLinkCombination = new LinkCombination();
            newLinkCombination.CombinationNo = linkCombination.CombinationNo;
            Link newLink;
            foreach (Link link in linkCombination.Links)
            {
                newLink = Link.Clone(link);
                newLinkCombination.Links.Add(newLink);
            }

            return newLinkCombination;
        }
Пример #2
0
 private void CombinateLinks(List<LinkCombination> combinations, List<Link> midLinks, Link curLink)
 {
     if (curLink.NextLinks == null || curLink.NextLinks.Count == 0)
     {
         LinkCombination combination = new LinkCombination();
         foreach (Link link in midLinks)
             combination.Links.Add(link);
         combination.Links.Add(curLink);
         combinations.Add(combination);
     }
     else
     {
         foreach (Link link in curLink.NextLinks)
         {
             if (link.NextLinks != null && link.NextLinks.Count > 0)
                 midLinks.Add(link);
             CombinateLinks(combinations, midLinks, link);
             if (link.NextLinks != null && link.NextLinks.Count > 0)
                 midLinks.Remove(link);
         }
     }
 }
Пример #3
0
        private List<LinkCombination> GetResultCombinations(LinkCombination linkCombination)
        {
            List<LinkCombination> combinations = new List<LinkCombination>();

            List<Link.Channel> channels;
            string masks;
            bool isValidLinkCombination;
            LinkCombination newLinkCombination;
            foreach (List<string> directionMasks in mAllCombinationDirectionMasks)
            {
                isValidLinkCombination = true;
                for(int i = 0; i < linkCombination.Links.Count; i++)
                {
                    masks = directionMasks[i];
                    channels = linkCombination.Links[i].Channels;
                    for (int j = 0; j < masks.Length; j++)
                        channels[j].Result = (masks[j] == '1') ? "V":"H";

                    if (!IsLinkAllDirectionMatched(linkCombination.Links[i]))
                    {
                        isValidLinkCombination = false;
                        break;
                    }
                }

                if (isValidLinkCombination)
                {
                    newLinkCombination = LinkCombination.Clone(linkCombination);
                    combinations.Add(newLinkCombination);
                }
            }

            return combinations;
        }