コーディングの恐怖を読んで、私はちょうど別の時にFizzBuzzに出くわしました。
元の投稿はここにあります:コーディングホラー:なぜプログラマーは..プログラムできないのですか?
知らない人のために:FizzBuzzは非常に人気のある子供向けゲームです。1から100まで数えて、数値が3で割り切れるたびに文字列「Fizz」が呼び出され、数値が5で割り切れるたびに文字列「Buzz」が呼び出され、数値が3と5で割り切れるたびに両方数字の代わりに「FizzBuzz」という文字列が一緒に呼び出されます。
今回はコードを書いて1分かかりましたが、気に入らないことがいくつかあります。
これが私のコードです:
public void DoFizzBuzz()
{
var combinations = new Tuple<int, string>[]
{
new Tuple<int, string> (3, "Fizz"),
new Tuple<int, string> (5, "Buzz"),
};
for (int i = 1; i <= 100; ++i)
{
bool found = false;
foreach (var comb in combinations)
{
if (i % comb.Item1 == 0)
{
found = true;
Console.Write(comb.Item2);
}
}
if (!found)
{
Console.Write(i);
}
Console.Write(Environment.NewLine);
}
}
だから私の質問は:
- 見つかったブール値を取り除くにはどうすればよいですか?
- foreachよりも優れたテスト方法はありますか?