[表示 : 全て 最新50 1-99 2chのread.cgiへ]
Update time : 10/16 19:40 / Filesize : 21 KB / Number-of Response : 53
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Oven/Egg総合スレ part1



12 名前:デフォルトの名無しさん [2009/01/08(木) 01:40:05 ]
zippedされたレンジの要素はtupleになるが、tupleを作るところをカスタマイズできるというのがzipped_with。
この例では、cat関数にてtupleではなくstringを作ってもらうようにして、fizzbuzzを作ってみた。
#include <iostream>
#include <string>
#include <boost/foreach.hpp>
#include <boost/lexical_cast.hpp>
#include <pstade/oven/zipped_with.hpp>
#include <pstade/oven/counting.hpp>
#include <pstade/oven/cycled.hpp>
#include <pstade/oven/taken.hpp>
std::string cat(unsigned i, std::string const& f, std::string const& b) {
  if (f.empty() && b.empty())
    return boost::lexical_cast<std::string>(i);
  else
    return f + b;
}
int main() {
  using namespace pstade::oven;
  std::string const fizz[] = {"", "", "fizz"};
  std::string const buzz[] = {"", "", "", "", "buzz"};
  BOOST_FOREACH(std::string const& s,
    boost::make_tuple(
      counting(1u, max_count),
      fizz | cycled, //"", "", "fizz", "", "", "fizz", ...のように無限に繰り返すレンジが作られる。
      buzz | cycled)
    | zipped_with(cat) | taken(20))
  {
    std::cout << s << std::endl;
  }
}
このfizzbuzzは作者mb2さんのブログ記事を参考にして作った(なぜか全体のコードが見れなかったけど)。
d.hatena.ne.jp/mb2sync/20070514#p1






[ 続きを読む ] / [ 携帯版 ]

全部読む 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<21KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef