2010-01-01から1年間の記事一覧

edict-lookup-selectionの挙動を変更する

xyzzyではC-c eなどでキャレット位置の単語で辞書を引けるのだが、その挙動がやや不満である。 というのも、単語の一番後ろにキャレットがあると、次の単語で調べてしまうのだ。 ちょっと調べるときに、単語を入力して検索、とやると別の単語が出てきてイラ…

windowsのファイル名ソートっぽいの

数字の大きさ順に並ぶとかいうアレ。一般的な名称は知らない。実装してる関数も知らないので書いた。 (defun filename< (p1 p2) (while (and (not (equal p1 "")) (not (equal p2 ""))) (let* ((a (string-match "[0-9]+" p1)) (m1 (match-string 0)) (b (st…

数値を整形とか何とか

TeXでまともな資料を作ろうとすると、数値をちゃんと整形する必要がある。数値の大きさと精度により、適切な書式で書かなければならないのだが、これを手作業で行うのは面倒である。そこで、適当に整形してくれる関数を作ってみた。 (defvar *significant-fi…

XnViewを使う。

TeXインストーラ3でダウンロードするようにはなっていないが、何を血迷ったのかwindowsでepsを大量に処理しなければならない環境にあるときはXnViewを導入すべき。epsをピクセルベースの画像と同じような感覚でプレビューできる。

round関数

C++

intを有効桁数指定で四捨五入したいのだが、もう少しまともに書けないものか・・・。 template<class T> int round (T a,int n) { //aを有効桁数n桁で四捨五入 //丸め部分がちょうど5なら偶数に丸める int x[64], f = 0, i = 0; T m = 1; for (;;) { x[i] = a%10, a /</class>…

ライフゲーム(3)

C++

ライフゲームのルールを読み込めるようにした(DL)。 boost::Qiかboost::Lexが使える気がしたが、良く分からないのでboost::tokenizerで分解してステートマシンでごり押しである。もっとクールに書きたい・・・。 まあ、好きなルールで実行できるようになった…

ライフゲーム(2)

ライフゲーム - 象徴ヶ淵で作ってた奴は画面サイズを大きくすると、無駄に処理速度が低下してしまったのでFLTKは止めた。GLUTも試したが、画面サイズを大きくするともたついてしまう。SDLの通常画面では期待通りの処理速度で動いてくれたので、そちらに切り…

cc-modeでmakeを呼び出す

コマンドってなかったっけ。いちいちC-x & makeって打つの面倒だし。 (add-hook '*c++-mode-hook* 'cc-init) (define-key ed::*c++-mode-map* '(#\C-c #\C-c) 'c-call-make) (define-key ed::*c++-mode-map* '(#\C-c #\C-m) 'c-call-make-bind) (defun cc-in…

ライフゲーム

FLTKで画像の表示がなんとか出来るようになったので、 コンウェイ(J.H.Conway)のライフゲームのバリアントを作ってみた(DL)。 普通のルールではなくて、拡張したルールを用いている。全く同じで、高速なプログラムが存在していないようなので作ってみた。や…

FLTKをインストールした

C++

こっちはずっと楽である(それでも苦労したが)。 CMAKEを用意して、GUIで適当に設定してconfigureとgenerateを行う。するとインストールディレクトリにmakeが出来るので指定されたmakeを使ってmakeすればよい。GL関連のコンパイルで失敗したようで、GLの機能…

wxWidgetをインストールした

C++

GUI付けたいなーと思って調べたら、wxWidgetが良いと力説するサイトがあったので、wxWidgetをインストールしようとした。 のだが、書いてある通りに試したはずだが上手く行かない。 ***/wxMSW-2.8.11/build/msw> mingw32-make -f makefile.gcc if not exist …

QAPLIBのグラフ化

グラフをたくさん貼るのが面倒そうなのでhttp://homepage3.nifty.com/skmkn/qap/に置いてみた。

行列をヒストグラムで描きたい!

例えば、 1 2 3 4 5 6 7 8 9 10 11 12というようなデータをgnuplotでグラフ化したい。 splot "data1" matrix with pm3d で描画させるとこういう感じになる。違う。違うんだ。離散値だからヒストグラムにして欲しいんだ。つまり、3次元の棒グラフを描きたい.…

pixivの新デザインが残念すぎる件

pixivのデザインがリニューアルされてから、syleraでpixivを開くとメモリを異常に使うようになった*1。最近pixivが原因だと判明したので、ちょっと調べてみた。どうも、pixivの新デザインでは、1800x2400の画像を切り貼りして各部を表現しているらしい。この…

メルセンヌツイスタの導入

億単位の解を生成するのに、rand()では力不足すぎる。というわけで、メルセンヌツイスタ(MT)を導入することにした。 MTをサポートするライブラリはいくつかあるが、初心者は最も使われているものを使え、ということで、boost::randomに含まれているものを使…

2次割り当て問題の解を評価する(2)

というわけで、評価関数をc++で書くことにした。適当に書いて100000回計算させて360ms。xyzzy上での344倍の速度である。ここまで差があると、xyzzy上で走らせるのはもったいない・・・。 しかし、探索アルゴリズムをlispで試したい。そこで、c++でdllを作っ…

2次割り当て問題の解を評価する(1)

2次割り当て問題(QAP)は巡回セールスマン問題と似たようなNP困難な問題である。QAPで検索すれば出てくるけど、大雑把にいうと、物資の移動量(流量)×距離がシステム全体で最小になる配置を探す問題だ。答えが分かっている問題例はQAPLIB Home Pageで得られる…

第1種スターリング数とパスカルの三角形

第1種スターリング数とパスカルの三角形も第2種スターリング数と同様に書ける。この形式ではパスカルの三角形が最も基本的な形になるだろう。 (defun stirling-1st-kind-line (&optional lst) (do ((1-n (- 1 (length lst))) (b lst (cdr b)) (x 0 (car b)) …

第2種スターリング数をO(nk/2)で求める関数

第2種スターリング数S(n,k)は、n個の区別できる要素をk個の集合(区別できない箱)にまとめる場合の組合せの数を表す。主な注意点は以下の通り。 n=0のとき、0組に分ける場合が1通りで、それ以外が0通りになる。 n>0のとき、0組に分けられないので、k=0では0通…

第2種スターリング数とフィボナッチ数

第2種スターリング数を求める関数を書いていた。 ;n<20程度にする (defun stirling-2nd-kind (n k) (cond ((= n k) 1) ((zerop k) 0) ((< n k) 0) (t (+ (stirling (1- n) (1- k)) (* k (stirling (1- n) k)))))) これだと,多重再帰となって非常に計算が遅…

誤差逆伝搬法

大学の課題でニューラルネットワークの誤差逆伝搬法*1による学習を作ったので載せてみる。課題自体はC++で作るものだが、適当に書く分にはlispの方がずっと楽である。C++で書いた方はひどいことになってるので載せない。 適当に書いたので、層とユニットの数…

dotimesの挙動

これは知らなかった。 (dotimes (a 10) (format t "~A " (incf a))) | 1 3 5 7 9 dolistで使っているリストは関係なし。 (let ((l '(1 2 3 4 5))) (dolist (a l) (format t "~A ~A " a (setq l (cdr l))))) | 1 (2 3 4 5) 2 (3 4 5) 3 (4 5) 4 (5) 5 nil

人材獲得作戦・試験問題を解いてみた

ネタ元は人材獲得作戦・4 試験問題ほか: 人生を書き換える者すらいた。 単純な経路探索なので、コピペすれば10分もかからないだろうが、なんとなく解いてみた。時間は記事を読み始めてから85分ほどかかった。ただし、xyzzy上で動くプログラムなので、要求は…