2008-10-26

http://anond.hatelabo.jp/20081025233759

Thanks. 確かにそうなんだけど、putsだと勝手に改行が出力されてしまうので一ヶ所しか使えなかった。DRY、forなし、ifなし(:?使ってるのでインチキだけど)、main以外に関数なし風味。これで完成ということにして寝ます。

int main() {
  int fizz_buzz(int i, int limit) {
    int do_fizz_buzz(int num, int divisor, const char* str, int print) {
      return num % divisor == 0 ? do_fizz_buzz(num / divisor, divisor, str, 1) : (printf("%s", print ? str : ""), num);
    }
    do_fizz_buzz(do_fizz_buzz(i, 3, "Fizz", 0), 5, "Buzz", 0) == i ? printf("%d\n", i) : puts("");
    return i++ == limit ? 0 : fizz_buzz(i, limit);
  }
  return fizz_buzz(1, 100);
}

移植性の話は厳禁でw

記事への反応 -
  • http://anond.hatelabo.jp/20081025224505

    #include <stdio.h>int main(){ int i, j = 0; for(i=1; i<=100; j = 0, i++){ if(i % 3 == 0) { printf("Fizz"); j = 1; } if(i % 5 == 0) { printf("Buzz"); j = 1; } if (j) { printf("\n&quot...

    • http://anond.hatelabo.jp/20081025225144

      フラグを導入するっていうのは一つの手だけど 今度はプログラム中でフラグを管理する必要が出てくるじゃない。 プログラムの中で管理する「状態」は極力減らせっていう鉄則 (何に書...

      • http://anond.hatelabo.jp/20081025230447

        じゃぁ再帰で。 int fizz_buzz(int i, int j) { if(i % 3 == 0 && j % 3 != 0) { printf("Fizz"); return 1+ fizz_buzz(i / 3, j * 3); } if(i % 5 == 0 && j % 5 != 0) { printf("Buzz"); r...

        • http://anond.hatelabo.jp/20081025231830

          さっきのはあまりに汚かったのでちゃんと書いたよ!! static int do_fizz_buzz(int num, int rem, const char* str, int print) { if (num % rem == 0) { return do_fizz_buzz(num / rem, rem, str, 1); } if (print) printf("%...

          • http://anond.hatelabo.jp/20081025233552

            printf("%s", str); printf(str);又はputs(str); "%s"をパースする時間がもったいない とかどうでしょうか?

            • http://anond.hatelabo.jp/20081025233759

              Thanks. 確かにそうなんだけど、putsだと勝手に改行が出力されてしまうので一ヶ所しか使えなかった。DRY、forなし、ifなし(:?使ってるのでインチキだけど)、main以外に関数なし風味。これで...

              • http://anond.hatelabo.jp/20081026002746

                for を再帰で代替するなんて、どういうメリットがあるの?

                • http://anond.hatelabo.jp/20081026004041

                  for を再帰で代替するなんて、どういうメリットがあるの? 逆だよ。ループ構文が再帰の一種なの。 だから代替するってのはちょっと違う。

                  • http://anond.hatelabo.jp/20081026110712

                    ループが再帰処理の一種・・・? 再帰処理って処理を停止して新しい処理を行い、終了後に停止していた処理に戻ることじゃない? 処理A -> 処理B -> 処理A が再帰処理の名前の由来で...

                    • http://anond.hatelabo.jp/20081027001018

                      元増田じゃないけど、LISPとかの話じゃないかな。 ループは再帰で実現できるけど、再帰はループで実現できない。だから論理的には、再帰の方がより一般的。(再帰さえあればOK) ただ...

                    • http://anond.hatelabo.jp/20081027001018

                      「俺にとってはループの方が判りやすい」という主張は否定しないが。 再帰処理って処理を停止して新しい処理を行い、終了後に停止していた処理に戻ることじゃない? 処理A -> 処...

                      • http://anond.hatelabo.jp/20081027222327

                        「末尾再起のある処理系なら」と付け加える必要があるのでは?

                      • http://anond.hatelabo.jp/20081027222327

                        よくわかってないならマジレスしなくていいよ。ネタじゃないし。 それは「関数呼び出し」じゃないかな? 言語によるのかも知れないが、私が触ってきた言語では全部自分自身を関数...

                        • http://anond.hatelabo.jp/20081028222130

                          元増田と違う人かもしれないが、 言語によるのかも知れないが、私が触ってきた言語では全部自分自身を関数呼び出しすることを再帰と言っていた。 これには同意します。しかしな...

                          • http://anond.hatelabo.jp/20081029021459

                            プログラム構造のレベルでも、個人的な感覚の問題かもしれないが、再帰処理よりもループのほうがわかりやすい。 それで、元々のプログラムがループで記述されていた場合、わざわざ...

                            • http://anond.hatelabo.jp/20081029183233

                              再帰ねー 木探索を簡潔に記述できる以外でループに勝る点なんかほとんど思いつかないんだけど 末尾再帰しかしないならループの方が簡潔だし、少なくともループの方が遅いことはない ...

                            • http://anond.hatelabo.jp/20081029183233

                              最初のネタ扱いの書き方が失礼だったことは申し訳なかったですが、どうかカッカしないで欲しい...。 で、結局、何を「メリット」と考えるか、何を軸に「大小関係」を考えるのかがず...

                              • http://anond.hatelabo.jp/20081030015647

                                別に怒っちゃいないよ。 表現力としても再帰処理よりループのほうが優秀だと思うな。 再帰処理はループ以外の処理もできるけれど、ループはループしかしないからね。 これが再帰...

                                • http://anond.hatelabo.jp/20081030193739

                                  再帰処理って処理を停止して新しい処理を行い、終了後に停止していた処理に戻ることじゃない? 処理A -> 処理B -> 処理A が再帰処理の名前の由来でしょ? 大はずれだろ。どこが「...

                                • http://anond.hatelabo.jp/20081030193739

                                  元エントリについている『大はずれだろ。どこが「名前の由来」やねん。』云々は別増田です (って言っても増田だから説得力ないかもしれませんが) さて、 表現力としても再帰処...

                        • http://anond.hatelabo.jp/20081031010058

                          元エントリについている『大はずれだろ。どこが「名前の由来」やねん。』云々は別増田です 口調が違うのでわかります。 ちなみにそのエントリについてるエントリも私とは別増田で...

              • DRYなFizzBuzz

                http://anond.hatelabo.jp/20081026002746 ステートマシン大好きっ子としては書かずにいられない もう少しがんばればforも無くせるな fsmの中身ってDRYなの?的な話もあるだろうが,こんなもの他の...

                • http://anond.hatelabo.jp/20081026132547

                  FizzBuzz続き Cにもlambdaがあればいいのに #include <stdio.h>#include <unistd.h>#define FALSE 0#define TRUE !FALSEtypedef struct state_t { int state; int num; int max; int outputted;} state_t;typedef struct fsm_t { ...

                  • http://anond.hatelabo.jp/20081028123934

                    なんでここまで簡単な要求を、ここまで複雑に書く必要があるのか、サッパリ理解できません。 それがプログラマというもの? だったら僕はプログラマになんかならなくてもいいや。

                  • http://anond.hatelabo.jp/20081028123934

                    じゃ、少しだけ本気出してみたよ。要求仕様にかなうといいんだけど。 #include <stdio.h>int main(void) { puts("1"); puts("2"); puts("Fizz"); puts("4"); puts("...

            • http://anond.hatelabo.jp/20081025233759

              後者がいいんじゃないかな。前者だと一部コンパイラだとセキュリティ警告が出ると突っ込まれるかもしれない。 この流れだとw

記事への反応(ブックマークコメント)

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん