とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

lexical_cast, counting_iterator を使って FizzBuzz

#include<string>
#include<boost/lexical_cast.hpp>
#include<boost/iterator/counting_iterator.hpp>
#include<iterator>
#include<iostream>
#include<algorithm>

template<typename T>
 std::string FizzBuzz(T n)
{
 if(!(n % 15))return "FizzBuzz";
 if(!(n % 5))return "Buzz";
 if(!(n % 3))return "Fizz";
 return boost::lexical_cast<std::string>(n);
}

int main()
{
 using namespace std;
 typedef boost::counting_iterator<int> ci;
 transform(ci(1), ci(21), 
           ostream_iterator<string>(cout, "\n"), FizzBuzz<int>);
}

実行結果:

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz