三角数を求める(コルーチンの練習)
三角数 - Wikipediaを求めるプログラム。C# のコルーチンの練習。
using System; using System.Collections.Generic; using System.Linq; public class TestTriangles { static IEnumerable<int> Triangles() { int x = 0; for (int i = 1; /* none */; i++) { x += i; yield return x; } } static void Test1() { var e = Triangles().GetEnumerator(); for (int i = 0; i < 10 && e.MoveNext(); i++) { Console.Write(e.Current + " "); } Console.WriteLine(); } static void Test2() { int n = 0; foreach (int t in Triangles()) { Console.Write(t + " "); if (10 == ++n) break; } Console.WriteLine(); } static void Test3() { foreach (int t in Triangles().Take(10)) { // System.Linq Console.Write(t + " "); } Console.WriteLine(); } public static void Main() { Test1(); Test2(); Test3(); } }
実行結果:
% dmcs triangles.cs % mono triangles.exe 1 3 6 10 15 21 28 36 45 55 1 3 6 10 15 21 28 36 45 55 1 3 6 10 15 21 28 36 45 55
- System.Linq はまだよく理解していない。