« 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:
http://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/1863