上の説明を理解するための簡単なサンプル。0;}実行すると、87654321と表示される。v.rbegin()はv.end()-1の場所を指しており、v.rend()はv.begin()-1の場所を指していることが分かる。reverse_iteratorは名前の通り逆向きに進むことが分かる。これだけだと何が嬉しいか分からないので、以下に便利な使い方を示す。逆順ソートvectorを逆順にソートしたいときに、reverse_iteratorを使うと短く書ける。0;}setの最小値、最大値beginで最小値、rbeginで最大値を取得出来る。Eulerのとある問題でエラトステネスの篩を高速化している人がいた。興味深かったので、コードを読みといて自分なりにアレンジしてみた。ローカル環境で約2倍の高速化に成功した。1e8までのふるいが0.7s程度で実行出来た。0;}定数倍高速版ふるいアイディアとしては、2以外の偶数は素数ではないため、ふるいの配列は奇数に対してのみ用意する。素数か合成数かのフラグをboolではなくintのビットで管理する。1.で約2倍高速になった。これは直感的にも理解しやすい。内側の処理の実行回数が半分程度になるため2倍程度速くなりそうである。1.の後に2.を施すことで、さらに1.4倍ほど高速になった。32ビット毎に何らかの処理を纏めたというわけではなく、単純にフラグの管理をビットで行うようにしただけであるが意外と速くなった。使用するメモリがコンパクトになったためキャッシュに乗りやすくなったということだろうか。モジュールに別名をつけるimport句にasを付けるとモジュールに別名をつけることが出来る。import句にasを付けるとモジュール内の関数に別名を付けることが出来る。重複なし組み合わせ(nCk)と重複組み合わせ(nHk)を計算する関数を書いてみた。大きな数の最初の10桁を求める大きな数の最初の10桁を効率的に計算しないといけないような問題に遭遇した。下n桁を求めるのは剰余で出来るけど、上n桁ってどうやるのだろう。logを使うとうまく出来そうだ。いうことでやってみた。2のべき乗の上10桁を求めてみた。0;}結果確認プログラムの実行結果。107150860719950631169990020930Pythonで2^kを実際に計算して検算してみた。数学2014年11月29日土曜日Graphvizで二分探索木を描画するGraphvizという便利なツールがあることを知った。AT&T研究所が開発したオープンソースのグラフ描画ツールである。動かして遊んでみようということで、二分探索木を描画してみた。インストールUbuntuマシンにインストール。graphviz二分木を作るプログラムまず、20個の乱数を二分探索木に格納する。その後、Graphvizに読み込ませるDOT言語のスクリプトをdump関数で出力する。0;}上のソースはbst.cppという名前で保存しているとする。すると、以下の画像が表示される。実戦が左の子への辺、破線が右の子への辺である。これで木の回転をして遊んだり、平衡二分木を自分で実装したり、などなどするときに動作確認がしやすくなる。商社は何をやっているのか商社は何をやっているのか?どうやって儲けているのか?半年くらい働いてみて分かったことをまとめておく。商社の規模や扱っている商品によって違いはあるかもしれないが、基本的な部分はだいたい共通していると思う。仕入れ額のマージンが儲け商社の利益は、販売額と仕入れ額の差から生まれる。メーカーから商品を仕入れて、それに値段を上乗せして、消費者や小売業者に販売する。このとき上乗せした値段が利益になる。ここまでは前から知っていた。分かっていなかったのは商社の存在意義。メーカーが直接売ればいいじゃん。なんか商社って楽して儲けてるだけで何の価値も創造していないような・・と思っていた。いいモノを作れば売れるというわけではない商社の存在意義を考えるうえでポイントとなるのが、「いいモノを作れば必ず売れる」というのは間違いということ。いいモノを作っても宣伝しなければ売れない。そこで登場するのが商社。商社は持ち前の営業力でモノを上手に宣伝し、顧客に売り込む。今はこういう商品が人気だから、今度はこういう商品を開発しましょう!というように商品企画に関与することもある。商社はメーカーが作ったいいモノを世の中により広く流通させるために営業力の面からサポートを行う仲介業者みたいなイメージ。これが分かったとき、商社は楽して儲けているだけというイメージは完全に無くなった。モノは買い手にすぐ届くわけではないモノを買いたい人が見つかったらそれで終わりというわけではない。モノを顧客の元に届けなければならない。そのためには配送ルートが必要だ。それからモノを格納しておく倉庫も必要だ。何をいつどれだけ作ればいいかを考える生産計画も必要だ。いう物流まわりも商社がやっている。メーカーが作ったモノを営業して売り込み、顧客のもとに届けるまで面倒をみる。商品の総合プロデューサーという感じだろうか。6の証明を読んでいて、ふとsin(x)のテイラー展開について気になった。100くらいでもそれなりの精度で近似するためにはどれくらいの項数がいるのだろうか。2πのときにどれだけ項数が必要か考えれば十分だと思うけど、周期性は利用しないという前提で。十分に大きなkってどれくらいだろうか?スターリングの公式が使えそうな気がする。(ex/k)kである。100にてsin(x)をテイラー展開近似するのに必要な項数を見積もってみる。大事なことを書き忘れていた。sin関数のテイラー展開は以下のようになる。10-6となるようなkを概算してみる。150項あれば十分なのではないかと予想してみる。100]でのsin関数とそのテイラー展開近似(150項まで)をグラフにしてみた。十分な近似ができているようだ。-1/12最近摩訶不思議な式に出くわした。詳しいことは分からないが、様々な物理の分野で使用される式らしい。