2007-07-12

FizzBuzz

なんか2chのプログラマー板で見つけたので、ちょっとやってみた。
問題はこんなの
どうしてプログラマに・・・プログラムが書けないのか?

とりあえず、シンプルにこんな感じ。

#include <iostream>

using namespace std;

int main(int argc, char** argv)
{
for (int i = 1; i <= 100; i++) {
if (i % 15 == 0) {
cout << "FizzBuzz" << endl;
} else if (i % 5 == 0) {
cout << "Buzz" << endl;
} else if (i % 3 == 0) {
cout << "Fizz" << endl;
} else {
cout << i << endl;
}
}
return 0;
}

これではあまりにも芸がないなぁと思うので、もう少し考えてみる。

っで、10分考えた結果がまた芸のないこんなの。

#include <iostream>

using namespace std;

char table[][10] = {
"",
"Fizz",
"Buzz",
"FizzBuzz"
};

int main(int argc, char** argv)
{
for (int i = 1; i <= 100; i++) {
int f = (i % 5 == 0) ? (i % 3 == 0) ? 3: 2
: (i % 3 == 0) ? 1: 0;
if (f)
cout << table[f] << endl;
else
cout << i << endl;
}
return 0;
}

あんまりいい答えも思いうかばねぇ・・・
最初とほとんど変わってねぇよ・・・orz
やっぱりこのあたりがすっきりしてていいのかも・・・

No comments:

Post a Comment