魔導書の解読

・・・といっても中の解読じゃない。外側。
表紙のコードがなんなのか知りたくなった。

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ライブラリ使ってないからなー・・・分からんです。。。

力尽きました・・・