タグ

algorithmとC++に関するf99aqのブックマーク (2)

  • 正規表現しちへんげ! 第二夜

    09:25 10/12/31 年末まとめ 今年何やったっけ、と日記を読み返していました。何もやってないな…。 Polemy 作りました、くらい。 言語処理系作るのはやっぱり楽しいですね。 汎用言語として使う格的なものを作ろうとすると懲りすぎて一歩も進まなくなってしまう自分が見えるので、 来年は、そうだなあ、TopCoder/ICPC風コンテストに特化した言語というかC++へのトランスレータ、 くらいに絞って作ってみようかなあ。 書いた記事だと 最短性チェックの話 が自分では割と気に入っています。 これのもっとバグを許容するバージョン作れないか。 読んだ論文で面白かったのは "A Pearl on SAT Solving in Prolog" と "When Simulation Meets Antichains" (PDF) など。 あとは、今年読んで面白かったベスト5(順不同): 『

  • C++TMPを使ってコンパイル時に多倍長フィボナッチ計算。 - 簡潔なQ

    C++テンプレートメタプログラミング、つまりC++のテンプレート機能を使うと、静的に決定できる計算をコンパイル時にやってのけることができる。 あまりにすごすぎたのでフィボナッチ計算のプログラムを作ったのだが、unsigned long long intではすぐ桁あふれしてしまうので、テンプレート多倍長を組んでフィボナッチ計算。 ただし、FFT多倍長乗算とかまで実装する余裕はないので、行列を使った累乗の方法ではなく、普通の加算による線形時間計算の方法を使った。 今回はfib(700)を求めた。コンパイルには5分ほどかかった。 #include <iostream> using namespace std; namespace TMP { template<bool expr, typename IfTrue, typename IfFalse> struct select { typedef

    C++TMPを使ってコンパイル時に多倍長フィボナッチ計算。 - 簡潔なQ
  • 1