かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

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();
}

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