FizzBuzz
制御構文・論理演算を一切使わずに FizzBuzz - odz buffer
おぉ、なるほど。
一時オブジェクト作りまくりで書くとこんな感じ? template 勉強しないと。
#include "iostream" #include "sstream" using namespace std; template <bool mod3, bool mod5, int i> struct FizzBuzzString { string operator()() { stringstream ss; ss << i; return ss.str(); } }; template <int i> struct FizzBuzzString<true, false, i> { string operator()() { return "Fizz"; } }; template <int i> struct FizzBuzzString<false, true, i> { string operator()() { return "Buzz"; } }; template <int i> struct FizzBuzzString<true, true, i> { string operator()() { return "FizzBuzz"; } }; template <int i> inline string fizzbuzz() { return fizzbuzz<i - 1>() + FizzBuzzString<i % 3 == 0, i % 5 == 0, i>()() + ", "; } template <> inline string fizzbuzz<0>() { return ""; } int main(void) { cout << fizzbuzz<100>() << endl; return 0; }