Rokiのチラ裏

学生による学習のログ

2017-04-01から1ヶ月間の記事一覧

TMP によるコンパイル時ハフマンエンコーダー(Compile time huffman encoder)

何となく書いて見た。テンプレートメタプログラミングによって、コンパイル時にハフマンツリーを構築し各記号を符号化して生成する。 以下のサンプルコードで標準出力以外は全てコンパイル時に行われる。 exp: #include<srook/mpl/cxx17/huffman_coding/huffman_encode.hpp> #include<iostream> #include<boost/type_index.hpp> template<class T> inline v</class></boost/type_index.hpp></iostream></srook/mpl/cxx17/huffman_coding/huffman_encode.hpp>…

数式をRecursive Descent Parsing

数式(四則演算記号 +, -, *, /、括弧、数値のみから成る式)の解析が知人間で少し話題になってたので自分もrustで書いてみる。数式をBNFで表現してからコードに落とし込んだ結果、以下のようになった。面倒なので、unwrap_orをチェックしていない。 fn num(ex…

カラー画像の原理からJPEGの圧縮原理までの学習メモ

なんとなくJPEGにおける基本的な概念の理解を固めようと思ったので、その学習メモ。尚、具体的な計算式の意味や証明には取組んでいない。 用語と定義 成分の集合を画素という。画素の集合がデジタル画像となる。 デジタル画像は小さな点の集合から成っている…

Effective tuple algorithm

C++

下書きに眠っていたので投稿。タプル生成に関するアレコレを書いた。主に個人的にBoost.fusionで納得のいかないものを実装。 分割 たまにやりたい時がある。一々記述するよりは書いてしまった方が良いだろう。 exp: #include<tuple> #include<srook/tuple/algorithm/split.hpp> #include<srook/algorithm/for_each.hpp> #include<iostream> int</iostream></srook/algorithm/for_each.hpp></srook/tuple/algorithm/split.hpp></tuple>…

ランダムアクセス可能な全ての範囲を無駄なくベクトル演算する

C++

※ 2018/3/11 ライブラリ整理より当機能は削除した。 一々コンテナ毎にExpression templateを記述するのはバカバカしいので、書いてしまった。 ご覧の通り、Expression templateによって式構造を保存して遅延実行を行うため、範囲の無駄な一時オブジェクトは…

python de 同一メゾッド名の型チェック付き呼び分け

バイト中、以下のようなコードを見つけた。 def something1(x,y): print 'something1' def something2(x,y): print 'something2' def something3(x,y,z): print 'something3' def invoke(*args): argc=len(args) exp_message='not match function' if argc==…