Jypeli  5
The simple game programming library
ListHelpers.cs
Siirry tämän tiedoston dokumentaatioon.
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 
6 namespace Jypeli
7 {
11  public static class ListHelpers
12  {
18  public static double Min( this IEnumerable<double> values )
19  {
20  double min = double.PositiveInfinity;
21 
22  foreach ( var value in values )
23  {
24  if ( value < min ) min = value;
25  }
26 
27  return min;
28  }
29 
35  public static double Max( this IEnumerable<double> values )
36  {
37  double max = double.NegativeInfinity;
38 
39  foreach ( var value in values )
40  {
41  if ( value > max ) max = value;
42  }
43 
44  return max;
45  }
46 
52  public static double Average( this IEnumerable<double> values )
53  {
54  double sum = 0;
55  int count = 0;
56 
57  foreach ( var value in values )
58  {
59  sum += value;
60  count++;
61  }
62 
63  return sum / count;
64  }
65 
66 #if JYPELI
67 
73  public static Vector Average( this IEnumerable<Vector> values )
74  {
75  double xsum = 0, ysum = 0;
76  int count = 0;
77 
78  foreach ( var value in values )
79  {
80  xsum += value.X;
81  ysum += value.Y;
82  count++;
83  }
84 
85  return new Vector( xsum / count, ysum / count );
86  }
87 
88 #endif
89 
98  public static IEnumerable<TOutput> ConvertAll<TInput, TOutput>( this IEnumerable<TInput> items, Converter<TInput, TOutput> converter )
99  {
100  // Huom/TK: ConvertAll<TOutput>-metodi on jo olemassa, mutta sitä ei ole toteutettu X360/WP7-alustoille.
101 
102  List<TOutput> outList = new List<TOutput>();
103 
104  foreach ( TInput item in items )
105  {
106  outList.Add( converter( item ) );
107  }
108 
109  return outList;
110  }
111 
112  public static List<T> FindAll<T>( this List<T> items, Predicate<T> pred )
113  {
114  // Huom/TK: FindAll-metodi on jo olemassa, mutta sitä ei ole toteutettu X360/WP7-alustoille.
115 
116  List<T> outList = new List<T>();
117 
118  foreach ( var item in items )
119  {
120  if ( pred( item ) )
121  outList.Add( item );
122  }
123 
124  return outList;
125  }
126 
127 #if !WINDOWS
128  public static int FindLastIndex<T>( this List<T> items, Predicate<T> pred )
129  {
130  // Huom/TK: FindLastIndex-metodi on jo olemassa, mutta sitä ei ole toteutettu X360/WP7-alustoille.
131 
132  int foundIndex = -1;
133 
134  for ( int i = 0; i < items.Count; i++ )
135  {
136  if ( pred( items[i] ) )
137  foundIndex = i;
138  }
139 
140  return foundIndex;
141  }
142 #endif
143 
144  public static void RemoveAll<T>( this List<T> items, Predicate<T> pred )
145  {
146  // Huom/TK: RemoveAll-metodi on jo olemassa, mutta sitä ei ole toteutettu X360/WP7-alustoille.
147 
148  foreach ( var item in items.FindAll( pred ) )
149  {
150  items.Remove( item );
151  }
152  }
153 
154  public static T Find<T>( this List<T> items, Predicate<T> pred )
155  {
156  // Huom/TK: FindAll-metodi on jo olemassa, mutta sitä ei ole toteutettu X360/WP7-alustoille.
157 
158 #if WINDOWS
159  return items.Find( pred );
160 #else
161  foreach ( var item in items )
162  {
163  if ( pred( item ) )
164  return item;
165  }
166 
167  return default( T );
168 #endif
169  }
170 
171  public static T ArrayFind<T>( T[] array, Predicate<T> pred )
172  {
173  // Huom/TK: FindAll-metodi on jo olemassa, mutta sitä ei ole toteutettu X360/WP7-alustoille.
174 
175 #if WINDOWS
176  return Array.Find( array, pred );
177 #else
178  for (int i = 0; i < array.Length; i++)
179  {
180  if ( pred( array[i] ) )
181  return array[i];
182  }
183 
184  return default( T );
185 #endif
186  }
187 
188  public static IEnumerable<K> FindAll<K,V>( this Dictionary<K,V>.KeyCollection keys, Predicate<K> pred )
189  {
190  for ( int i = 0; i < keys.Count; i++ )
191  {
192  K key = keys.ElementAt( i );
193  if ( pred( key ) ) yield return key;
194  }
195  }
196  }
197 }
static IEnumerable< TOutput > ConvertAll< TInput, TOutput >(this IEnumerable< TInput > items, Converter< TInput, TOutput > converter)
Muuntaa kokoelman tietyn tyyppisiä olioita kokoelmaksi toisen tyyppisiä olioita.
Definition: ListHelpers.cs:98
static double Min(this IEnumerable< double > values)
Laskee minimin.
Definition: ListHelpers.cs:18
static double Max(this IEnumerable< double > values)
Laskee maksimin.
Definition: ListHelpers.cs:35
static int FindLastIndex< T >(this List< T > items, Predicate< T > pred)
Definition: ListHelpers.cs:128
static double Average(this IEnumerable< double > values)
Laskee keskiarvon.
Definition: ListHelpers.cs:52
Apufunktioita listojen ja muiden tietorakenteiden käyttöön.
Definition: ListHelpers.cs:11
static T ArrayFind< T >(T[] array, Predicate< T > pred)
Definition: ListHelpers.cs:171
static void RemoveAll< T >(this List< T > items, Predicate< T > pred)
Definition: ListHelpers.cs:144
static List< T > FindAll< T >(this List< T > items, Predicate< T > pred)
Definition: ListHelpers.cs:112
2D-vektori.
Definition: Vector.cs:56
static IEnumerable< K > FindAll< K, V >(this Dictionary< K, V >.KeyCollection keys, Predicate< K > pred)
Definition: ListHelpers.cs:188
static T Find< T >(this List< T > items, Predicate< T > pred)
Definition: ListHelpers.cs:154