/// <summary> /// Constructor with index selection. /// </summary> /// <param name="isIndexSatisfied"></param> /// <param name="select"></param> public JoinDelegateExpression(Predicate2 <uint, Dictionary <string, object> > isIndexSatisfied, Predicate <T> isSatisfied, [NotNull] SelectDelegate <Selectable, T> select, Action <List <Selectable> > sort, JoinKeyDelegate <Key, T> join) : base(isIndexSatisfied, isSatisfied, select, sort) { this.joinKey = join; }
/// <summary> /// Constructor with index selection. /// </summary> /// <param name="isIndexSatisfied"></param> /// <param name="select"></param> public DelegateExpression(Predicate2 <uint, Dictionary <string, object> > isIndexSatisfied, [NotNull] SelectDelegate <Selectable, T> select, Action <List <Selectable> > sort) { this.isIndexSatisfied = isIndexSatisfied; this.select = select; this.sort = sort; }
/// <summary> /// Constructor with index selection. /// </summary> /// <param name="isIndexSatisfied"></param> /// <param name="select"></param> public AutoSelectDelegateExpression(Predicate2 <uint, Dictionary <string, object> > isIndexSatisfied, Predicate <T> isSatisfied, Action <List <T> > sort) { this.isIndexSatisfied = isIndexSatisfied; this.isSatisfied = isSatisfied; this.sort = sort; }
/// <summary> /// Поиск очередной перестановки /// </summary> public static bool NextPermutation <T>(T[] sequence, Predicate2 <T> compare) { // Этап № 1 var i = sequence.Length; do { if (i < 2) { return(false); // Перебор закончен } --i; } while (!compare(sequence[i - 1], sequence[i])); // Этап № 2 var j = sequence.Length; while (i < j && !compare(sequence[i - 1], sequence[--j])) { ; } _SwapItems(sequence, i - 1, j); // Этап № 3 j = sequence.Length; while (i < --j) { _SwapItems(sequence, i++, j); } return(true); }
public bool IsSatisfied(uint index, Dictionary <string, object> indexable) { Predicate2 <uint, Dictionary <string, object> > t = isIndexSatisfied; if (t != null) { return(t(index, indexable)); } return(true); }
static public bool ForAll2 <T, S>(T[] a1, S[] a2, Predicate2 <T, S> pred) { if (a1.Length != a2.Length) { throw new System.ArgumentException(); } for (int i = 0; i < a1.Length; ++i) { if (!pred(a1[i], a2[i])) { return(false); } } return(true); }
public static TElement Select <TElement>(IEnumerable <TElement> set, Predicate2 <TElement> predicate) { if (set == null || !set.Any()) { throw new ArgumentOutOfRangeException(nameof(set), "Empty set."); } var winner = set.First(); foreach (var element in set) { if (predicate.Call(winner, element)) { winner = element; } } //return set.FirstOrDefault(e => predicate.Call(winner, e)); return(winner); }
/// <summary> /// Constructor with index selection. /// </summary> /// <param name="isIndexSatisfied"></param> /// <param name="select"></param> public AutoSelectDelegateExpression(Predicate2 <uint, Dictionary <string, object> > isIndexSatisfied) { this.isIndexSatisfied = isIndexSatisfied; }
/// <summary> /// Constructor with index selection. /// </summary> /// <param name="isIndexSatisfied"></param> /// <param name="select"></param> public AutoSelectJoinDelegateExpression(Predicate2 <uint, Dictionary <string, object> > isIndexSatisfied, Predicate <T> isSatisfied, Action <List <T> > sort, JoinKeyDelegate <Key, T> join) : base(isIndexSatisfied, isSatisfied, sort) { this.joinDelegate = join; }
/// <summary> /// Constructor with index selection. /// </summary> /// <param name="isIndexSatisfied"></param> /// <param name="select"></param> public AutoSelectJoinDelegateExpression(Predicate2 <uint, Dictionary <string, object> > isIndexSatisfied, JoinKeyDelegate <Key, T> join) : base(isIndexSatisfied) { this.joinDelegate = join; }