かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Buzzになる数字をn個挙げる

ネタ元Buzzになる数字をn個挙げる
それLINQでryってネタだったのでLINQPad起動してやってみました。

void Main()
{
    // n個
    int n = 5;
    // 無限リスト(無限じゃないけどintの最大値まで・・・)
    var list = Enumerable.Range(1, int.MaxValue)
        // Buzzのものだけ取り出して
        .Where(i => FizzBuzz(i) == "Buzz")
        // n個とる
        .Take(n);
    // 表示
    foreach (var i in list)
    {
        Console.WriteLine(i);
    }
}

// 数字を受け取ってFizzBuzzのルールに従って変換
string FizzBuzz(int n)
{
    return n % 15 == 0 ? "FizzBuzz" :
        n % 3 == 0 ? "Fizz" :
        n % 5 == 0 ? "Buzz" :
        n.ToString();
}

まぁ、関数型言語ほど簡潔にはなりませんね・・・。