« Filter::SQL を使って掲示板を書いてみました | メイン | C++ テンプレートを使って高速な高機能サーバを書く方法 »
2008年04月17日
C++ テンプレートで(いまさら)FizzBuzz
re C++テンプレートでFizzBuzz - おびなたのはてな日記
C++ テンプレートで if を定義しているのは面白いと思いましたが、一方で FizzBuzz を実現するためのコードとして見た場合は冗長じゃないかと思ったので、自分でも書いてみました。こんな感じ。
#include <iostream>
using namespace std;
template<int N, int Mod3=N%3, int Mod5=N%5> struct Print {
Print() {
cout << N << endl;
}
};
template<int N> struct Print<N, 0, 0> {
Print() {
cout << "FizzBuzz" << endl;
}
};
template<int N, int Mod5> struct Print<N, 0, Mod5> {
Print() {
cout << "Fizz" << endl;
}
};
template<int N, int Mod3> struct Print <N, Mod3, 0> {
Print() {
cout << "Buzz" << endl;
}
};
template<int N> struct FizzBuzz {
FizzBuzz() {
FizzBuzz<N-1>();
Print<N>();
}
};
template<> struct FizzBuzz<0> {
FizzBuzz() {}
};
int main()
{
FizzBuzz<100>();
}
投稿者 kazuho : 2008年04月17日 18:55
トラックバック
このエントリーのトラックバックURL:
https://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/1863