魔導書の解読
・・・といっても中の解読じゃない。外側。
表紙のコードがなんなのか知りたくなった。
http://longgate.co.jp/
本家に、表紙の壁紙があります。
どうやら地球よりこっち側の面と、向こう側の面で別のコードになっているらしい。ふむ。
右上の辺りには*** *ain()が読める。int main()か??
左上はなんかごちゃごちゃしていてうまく読めない・・・
namespace??
PaintTool Saiにお出まし頂いて、拡大してみると、
なるほど右上はint main()
左上のほうはnamespace ovn*********とかいろいろ書いてあるのね、と。
それで、いろいろ拡大しながら解読した結果がこれ、
int main() { using namespace pstade::oven; std::srand(std::time(0)); std::mt19937 engine; std::uniform_int_distribution<int> distribution(0, 100); std::tr1::function<int (int)> f = [](int x) { return x % 10; }; boost::copy( generation(nonstop( [&] { return distribution(engine); })) | transformed(f) | ta/*????*/ std::ostream_iterator<int>( std::cout, " " ) ); std::cout << std::endl; }
と、これ
namespace ovn = pstade::oven; using boost::lambda::_1; typedef ovn::any_range<int const& , boost::forward_traversal_tag> range_t; range_t qsort(range_t rng) { if(!rng) return rng; else { int const x = rng|ovn::front; range_t xs = rng|ovn::dropped(1); return /*??????*/ qsort( ovn::comprehension(_1, _1 <= x, ovn::always_return(xs)) ) |= ovn::single(x) |= qsort( ovn::comprehension(_1, _1 > x, ovn::always_return(xs)) ) ; } }
いろいろと怪しいけど、上のほうが0xの新しい乱数生成器をつかったサンプルで
下のほうがovenをつかってのクイックソートのサンプルらしい。
しかし・・・このままだとビルド通らない。
最初のboost::copyのなかのtransformedレンジアダプタの次はおそらくtakenかと思ったけど、かろうじて"ta"が読めるかなという感じで、保証できない。
下の方も3行に亘るreturn文の左側が全然読めない・・・
これのおかげでpstade::oven::comprehensionの使い方がわかりそうだけど、pendingになってるらしい??
個人的には上のソースでboost::copyより、pstade::oven::copyの方がよかったんじゃないかなー、とか思ったけど、
boost::copyの方がいい何かがあるのかも、全然BoostのほうのRangeライブラリ使ってないからなー・・・分からんです。。。
力尽きました・・・