FizzBuzz書いてみよう
知り合いとFizzBuzz書いてみようという話になりました。
@仕様
1から順番に数をコマンドプロンプトに表示する。
その数が3で割り切れるなら"Fizz"
5で割り切れるなら"Buzz"
両方で割り切れるなら"FizzBuzz"と表示する。
@引数
[0]=終端の値
言語はいつもの通りC#
まずはProgram.csを記述します。
using System; using Models; namespace FizzBuzzTest { static class Program { static void Main(string[] args) { //Todo:値判定 var endvalue = int.Parse(args[0]); Console.WriteLine(FizzBuzz.Execute(endvalue)); } } }
本来は、引数の数値判定とかするべきなんですが、面倒なので今回は割愛します。
次に実際に出力値を組み立てるクラスを作成します。(FizzBuzz.cs)
using System.Text; namespace Models { public class FizzBuzz { /// <summary> /// 実行 /// </summary> public static string Execute(int endValue) { var returnStrings = new StringBuilder(); for (int i = 1; i <= endValue; i++) { returnStrings.AppendLine(GetPrintValue(GetFizz(i), GetBuzz(i), i)); } return returnStrings.ToString(); } /// <summary> /// 出力値取得 /// </summary> private static string GetPrintValue(string fizz, string buzz,int target) { return ((fizz + buzz) == string.Empty) ? target.ToString() : (fizz + buzz); } /// <summary> /// Buzz /// </summary> private static string GetBuzz(int i) { return ((i % 5) == 0) ? "Buzz" : string.Empty; } /// <summary> /// Fizz /// </summary> private static string GetFizz(int i) { return ((i % 3) == 0) ? "Fizz" : string.Empty; } } }
クラス分けとかしないで、なるべく短く書くのがクールだと思うのですが、ついついクラスを分けてしまいますね。