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); }
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)); }
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); }
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); }