かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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

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