FizzBuzz

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
どうしてプログラマに・・・プログラムが書けないのか?

C言語で書いてみる。とりあえずシンプルに。

#include "stdio.h"

int main(int argc, char *argv[])
{
    int i;
    
    for (i = 1; i <= 100; i++) {
        if (i % (3 * 5) == 0) {
            printf("FizzBuzz\n");
        } else if (i % 3 == 0) {
            printf("Fizz\n");
        } else if (i % 5 == 0) {
            printf("Buzz\n");
        } else {
            printf("%d\n", i);
        }
    }
    
    return 0;
}


三項演算子で無理やり短くすると。

#include "stdio.h"

int main(int argc, char *argv[])
{
    int i;
    for (i = 1; i <= 100; i++) {
        i % (3 * 5) ? (i % 3 ? (i % 5 ? printf("%d\n", i) :
        printf("Buzz\n")) : printf("Fizz\n")) :	printf("FizzBuzz\n");
    }
    return 0;
}


三項演算子を使うと以下のような書き方も出来るよう。勉強になる。
2007-05-09 - tiny noises


元ネタ


調べてみるとWikipediaBizz buzzという項目で記載があったのだが、由来はアメリカのゲームだったんだ。