いや、まだだから

やまだの仮想庭園 ~ いつか実体の伴う日まで

目次

Blog 利用状況

記事カテゴリ

書庫

日記カテゴリ

リンク

FizzBuzz問題やってみた

さらにいまさら感がありますが……。

正直、解くだけならどの辺が難しいのか、よくわからなかったりします。最初はやってみる気は全然なかったんですが。

で、いろんな方の回答を見てたんですが、そこで思ったこと。

3 で剰余とって、5 でも剰余とってるのに、なんでまたもう一度 15 で剰余とってるんだ?

この辺まとめられんもんかと。一つの数字あたり、比較は二回でできるはずじゃないかと。

ちょっと考えてみたんですが、3 や 5 で割り切れるときに数字に『加えて』 Fizz や Buzz を出すのなら簡単なんですよ。単に文字列連結すれば良いだけなんだから。どちらかで割り切れる、その時だけ数字を『置き換える』必要がある。だから七面倒くさいな、と。

だからといって、剰余計算の代わりに、フラグとか文字列チェックが新たに入っても意味がない。

で、書いたのが以下の C# のコード。

static void Main(string[] args)
{
    for (int i = 1 ; i <= 100; i++)
        if (i % 3 == 0)
        {
            Console.Write("Fizz");
            if (i % 5 == 0)
                Console.Write("Buzz");
            Console.WriteLine();
        }
        else if (i % 5 == 0)
            Console.WriteLine("Buzz");
        else
            Console.WriteLine(i.ToString());
}

書いてみれば、べつにどうということはないコードかな、と。

剰余計算に基づく比較が3箇所ありますが、必ずどちらかに分岐するので、1ループあたりは2回の比較で済むはず。

#まあそれが実行性能に影響を与えるかっつうと、この程度のループでは関係しないので自己満足なんだけど。

んで、問題確認のために、えぴさんの こんなんでモチベーション上がんのかよ を確認に行くと、

なるほど、その手は考えつかんかった

と納得。何で見逃してるかなー。

で、思ったのは、モチベーションって、「何をつくるか」が問題じゃなくて、「どういう目的意識を『自分で持てるか』」、なんじゃないかなー、という、ある意味あたりまえのお話なのでした。

以上、まる

投稿日時 : 2007年11月8日 3:22

Feedback

# re: FizzBuzz問題やってみた 2007/11/08 21:23 さかもと

このお祭りには不参加。

超絶すぎるから→画伯。

# re: FizzBuzz問題やってみた 2007/11/08 22:53 やまだ

はいはい。あとで遊んだげるからねー。

# re: FizzBuzz問題やってみた 2007/11/11 19:12 さかもと

>>はいはい。あとで遊んだげるからねー。

おにょれ~~・・・。

タイトル
名前
Url
コメント