2 using System.Collections.Generic;
17 public static double Min(
this IEnumerable<double> values )
19 double min =
double.PositiveInfinity;
21 foreach ( var value
in values )
23 if ( value < min ) min = value;
34 public static double Max(
this IEnumerable<double> values )
36 double max =
double.NegativeInfinity;
38 foreach ( var value
in values )
40 if ( value > max ) max = value;
51 public static double Average(
this IEnumerable<double> values )
56 foreach ( var value
in values )
72 public static Vector Average(
this IEnumerable<Vector> values )
74 double xsum = 0, ysum = 0;
77 foreach ( var value
in values )
84 return new Vector( xsum / count, ysum / count );
90 public delegate TOutput Converter<in TInput, out TOutput>(TInput input);
106 public static void ForEach<T>(
this IEnumerable<T> items, Action<T> action)
108 foreach (T item
in items)
127 List<TOutput> outList =
new List<TOutput>();
129 foreach ( TInput item
in items )
131 outList.Add( converter( item ) );
137 public static List<T>
FindAll<T>(
this IEnumerable<T> items, Predicate<T> pred )
141 List<T> outList =
new List<T>();
143 foreach ( var item
in items )
152 public static void AddItems<T>(
this List<T> list, params T[] items) =>
153 list.AddRange(items);
155 public static void RemoveAll<T>(
this List<T> items, Predicate<T> pred )
159 foreach ( var item
in items.FindAll( pred ) )
161 items.Remove( item );
165 public static T
Find<T>(
this List<T> items, Predicate<T> pred )
170 return items.Find( pred );
172 foreach ( var item
in items )
187 return Array.Find( array, pred );
189 for (
int i = 0; i < array.Length; i++)
191 if ( pred( array[i] ) )
199 public static IEnumerable<K>
FindAll<K,V>(
this Dictionary<K,V>.KeyCollection keys, Predicate<K> pred )
201 for (
int i = 0; i < keys.Count; i++ )
203 K key = keys.ElementAt( i );
204 if ( pred( key ) ) yield
return key;
208 public static void ForEach<T>(
this T[] array, Action<T> action )
210 for (
int i = 0; i < array.Length; i++ )