Пример #1
0
        private static int AssertWeight(RootObjectFull root)
        {
            var counts = new List <int>();

            foreach (var sub in root.SubPrograms)
            {
                counts.Add(CountWeight(sub));
            }

            try
            {
                var key    = counts.GroupBy(r => r).Where(r => r.Count() == 1).First().Key;
                var result = AssertWeight(root.SubPrograms.First(r => CountWeight(r) == key));
                if (result == 0)
                {
                    var diff = counts.First(i => i != key) - key;

                    return(key += diff);
                }
                else
                {
                    return(result);
                }
            }
            catch
            {
                return(0);
            }
        }
Пример #2
0
        private static int CountWeight(RootObjectFull root)
        {
            var result = 0;

            result += root.Weight;
            if (root.SubPrograms != null)
            {
                foreach (var sub in root.SubPrograms)
                {
                    //result += sub.Weight;
                    result += CountWeight(sub);
                }
            }
            return(result);
        }
Пример #3
0
        private static RootObjectFull Populate(RootObject root)
        {
            var full = new RootObjectFull();

            full.Name        = root.Name;
            full.Weight      = root.Weight;
            full.SubPrograms = new List <RootObjectFull>();

            if (root.SubPrograms != null)
            {
                foreach (var sub in root.SubPrograms)
                {
                    var entry = list.First(r => r.Name.Equals(sub));
                    full.SubPrograms.Add(Populate(entry));
                }
            }

            return(full);
        }