2006-11-28から1日間の記事一覧

Take

C#

いやいや、やっぱり Map はいるよね、ちゃんと遅延評価しているし、と思って遅延評価を見るために Take を書いてみた。 static IEnumerable<T> Take<T>( int n, IEnumerator<T> it ) { for ( int i = 0; i < n; i++ ) { if ( it.MoveNext() ) yield return it.Current</t></t></t>…

Accumulate と Map を使って SumOfSquares

C#

static int SumOfSquares( IEnumerable<int> list ) { return Accumulate( delegate( int x, int y ) { return x + y; }, 0, Map<int, int>( delegate( int n ) { return n * n; }, list.GetEnumerator() ).GetEnumerator() ); }書いてみたかった。今は反省している。</int,></int>

Map

C#

Accumulateがこれでいいんだったら、Mapも書けるんじゃね?と思って書いてみた。 class Program { static void Main( string[] args ) { List<int> list = new List<int>( new int[] { 1, 2, 3, 4, 5 } ); Converter<int, int> converter = delegate( int n ) { return n * n; };</int,></int></int>…

Accumulate

C#

前の記事の「delegate T AccumulateAction( Combiner combiner, T value, IEnumerator it );」が不要なことに今さら気付いた。昨日の問題は引っ掛け問題っぽくなってしまってるw 問題のほうは訂正しとこ。 完成版のAccumulateはこちら。 class Program { st…

もっと試してみた

C#

昨日のを入力を破壊しないようにできた。 class Program { static void Main( string[] args ) { int result = SumOfSquares( new int[] { 1, 2, 3, 4, 5 } ); Console.WriteLine( result ); Console.Read(); } []delegate[] T AccumulateAction<T>( Combiner<T> c</t></t>…