C++ で FibBuzz

元ネタ:FizzBuzz は時代遅れらしいので FibBuzz はどうでしょう #fibbuzz - cod.note
C++ で書いてみた。

[ソース]

#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
#include <boost/range/irange.hpp>
#include <boost/range/algorithm/for_each.hpp>
#include <boost/range/adaptor/transformed.hpp>
#include <boost/lexical_cast.hpp>

unsigned long int
fibonacci(unsigned long int n){
    return n == 0 ? 0
         : n == 1 ? 1
         : fibonacci(n - 1) + fibonacci(n - 2);
}

std::string
fizz_buzz(unsigned long int n){
    return n % 15 == 0 ? "FizzBuzz"
         : n %  3 == 0 ? "Fizz"
         : n %  5 == 0 ? "Buzz"
         : boost::lexical_cast<std::string>(n);
}

int
main(){
    namespace lambda = boost::lambda;
    using lambda::_1;
    using boost::adaptors::transformed;
    int size = 30;

    boost::for_each(
        boost::irange(1, size)
            |transformed(lambda::bind(fibonacci, _1))
            |transformed(lambda::bind(fizz_buzz, _1)),
        std::cout << _1 << ", "
    );
    return 0;
}

[出力]

1, 1, 2, Fizz, Buzz, 8, 13, Fizz, 34, Buzz, 89, Fizz, 233, 377, Buzz, Fizz, 1597, 2584, 4181, FizzBuzz, 10946, 17711, 28657, Fizz, Buzz, 121393, 196418, Fizz, 514229, 

うーん、さっぱりし過ぎてなんかつまらないですね。
もうちょっと何かしたい。
あとメモ化していないので、サイズを大きくすると遅いです。