FizzBuzz問題の解法 C#

FizzBuzz問題の解法 C# C#

FizzBuzz問題は、プログラミングの初学者からエキスパートまで、さまざまな技術面接でよく使われるクラシックな問題です。この問題は、1から100までの数を順番に出力するプログラムを書くというもので、ただし3で割り切れる場合は “Fizz”、5で割り切れる場合は “Buzz”、3と5で割り切れる場合は “FizzBuzz” と出力するというルールがあります。

ここでは、C#を使用してFizzBuzz問題を解くシンプルで洗練されたコードをChatGptに解いてもらったコードを3点紹介します。これらのコードは、冗長性を排除し、可読性を向上させるように設計されています。


例 1: 基本的な条件分岐

using System;

class Program
{
    static void Main()
    {
        for (int i = 1; i <= 100; i++)
        {
            if (i % 3 == 0 && i % 5 == 0)
            {
                Console.WriteLine("FizzBuzz");
            }
            else if (i % 3 == 0)
            {
                Console.WriteLine("Fizz");
            }
            else if (i % 5 == 0)
            {
                Console.WriteLine("Buzz");
            }
            else
            {
                Console.WriteLine(i);
            }
        }
    }
}

この基本的なアプローチは、FizzBuzzのルールに厳密に従っており、条件分岐を使用して各ケースを処理しています。


例 2: 簡潔な文字列補完を使用

using System;

class Program
{
    static void Main()
    {
        for (int i = 1; i <= 100; i++)
        {
            string output = "";

            if (i % 3 == 0) output += "Fizz";
            if (i % 5 == 0) output += "Buzz";

            Console.WriteLine(output == "" ? i.ToString() : output);
        }
    }
}

このコードは、outputという文字列変数を使用し、簡潔な文字列補完を使ってFizzBuzzの条件に基づいて出力します。


例 3: Linqを使用

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        var fizzBuzzList = Enumerable.Range(1, 100)
            .Select(i => (i % 3 == 0, i % 5 == 0, i))
            .Select(tuple => tuple switch
            {
                (true, true, _) => "FizzBuzz",
                (true, false, _) => "Fizz",
                (false, true, _) => "Buzz",
                (_, _, var number) => number.ToString()
            });

        foreach (var result in fizzBuzzList)
        {
            Console.WriteLine(result);
        }
    }
}

このコードでは、Enumerable.Rangeで1から100までの数値のシーケンスを生成し、Selectメソッドを使用してタプル (i % 3 == 0, i % 5 == 0, i) を作成します。次に、Selectを再度使用してパターンマッチングを行い、結果を生成します。最後に、結果をforeachループで出力しています。

FizzBuzz問題のまとめ

FizzBuzz問題を解くことは単なるプログラムの練習に留まらず、コーディングスタイルや読みやすさを向上させる上での良い機会です。この記事のコード例を通じて、異なるアプローチで同じ問題に取り組む方法を学ぶことができます。プログラミングの基本的なスキルを向上させ、より効果的なコーディングを実現する手助けとなるでしょう。

ChatGptのコードはいいですね。AIによるコーディングはどこまで可能なのか気になりますし、他のAIでは、どのように解いてくれるのかも気になります。

その他

プラグイン:Highlighting Code Block

コメント