Esempio n. 1
0
        internal Relative <T> GetInversed()
        {
            var newRelative = new Relative <T>();

            foreach (var item in this)
            {
                newRelative.Add(new Tuple <T>((item as IEnumerable <T>).Reverse()));
            }
            return(newRelative);
        }
Esempio n. 2
0
        private static void Main()
        {
            var set = new Set <int> {
                1, 2, 3, 4
            };
            var rel1 = new Relative <int>(set, (x, y) => x == y - 1);
            var rel2 = new Relative <int>(set, (x, y) => x < y);

            Console.WriteLine(rel1);
            Console.WriteLine(rel2);
            Console.WriteLine(rel1.Compose(rel2));
        }
Esempio n. 3
0
        internal Relative <T> Compose(Relative <T> other)
        {
            var newRelative = new Relative <T>();

            foreach (var first in other)
            {
                foreach (var second in this)
                {
                    if (first[1].CompareTo(second[0]) == 0)
                    {
                        newRelative.Add(new Tuple <T> {
                            first[0], second[1]
                        });
                    }
                }
            }

            return(newRelative);
        }
Esempio n. 4
0
        internal Relative <T> GetAddition()
        {
            var newRelative = new Relative <T>();

            foreach (var item in universum)
            {
                foreach (var secondItem in universum)
                {
                    if (!predicate(item, secondItem))
                    {
                        newRelative.Add(new Tuple <T>()
                        {
                            item, secondItem
                        });
                    }
                }
            }
            return(newRelative);
        }