もっとオブジェクトっぽく書きたい!

オブジェクトっぽく書きたい! - 象徴ヶ淵は実際のところ使っていなかった。 ちょっと問題点があるのである。 (defmacro radical-macro (var arg) `#[,var car cdr cddr car (setf ,arg)]) | error: ‘,’がバッククオート構文以外に現れました 調子に乗って、…

「息吹」lapse00B

天狼で適当に設定したシフト側の挙動が気に入ったので、xyzzy側にも反映。大体wwwを入力するのに使う。 せっかくなので、気になっていた配置の記述方法や読み込み方法、入力の逆引き方法も修正した。 結果、読み込みが非常に速くなった。微妙にもたついて…

「息吹」lapse008での指負荷配分

2.032 2.714 3.435 2.485 2.158 2.006 2.720 6.105 3.852 2.580 | 30.09 2.131 9.662 8.488 6.044 1.672 3.412 5.073 4.411 4.832 4.146 | 49.87 1.507 2.265 2.422 2.131 1.794 2.386 2.160 1.656 1.848 1.873 | 20.04 -----------------------------------…

登録したファイルを開く

F1を押したら.xyzzyを開いて、F2を押したらメモを開いて……、と設定しておくと便利である。でも、ファイル1つ1つにコマンドを作っては芸がない。ということで、次のコマンドを書いてみた。 (defvar *favorite* '((#\F1 "~/.xyzzy") (#\F2 "~/memo"))) (defun …

ウィンドウサイズを複数パターン記憶できたら便利だよね。

; > xyzzy の音 - バッファ/ウィンドウ/フレーム ; > http://hie.s64.xrea.com/xyzzy/note/buffer.html#xyzzy-resize ; > xyzzy Part6 212 あたりからを参考に。 ; を改造。パターン記録して呼び出す方式に。 (provide "window-resize") (in-package "editor…

漢字直接入力「息吹」練習スクリプト

今までコマンドをM-xから呼び出していたのを、他の人にも多少は使いやすいようにモジュール化してみた。 モジュールは例によってnetinstallerからインストールできるようにしてある。 自分としても作業手順を一本化できたので、手間を削減できた気がする。 …

漢字直接入力「息吹」を天狼で使う

せっかく覚えてきたので、他のソフトでも使えるようにしてみる。 天狼なら、 入力キーを並べて記述すればそのまま入力できて、IMEで変換もできるようなので、これに対応する。 ということで、書いたのがこれ。 まずは簡易ということで、配列を書き出しただけ…

漢字直接入力「息吹」 lapse 008

004以降uploadしていなかったので、久々の更新である。 例によって、xyzzy上でnetinstallerからインストールできるようにしてある。 今回は、コンセプトは変わらないものの、配置は全く別物になっている。 以前の配列はもう覚えていないけれど、「息吹」で練…

Spelunkyを100回クリアした記念

Spelunky(日本語wiki)は 鞭とロープとローソク爆弾で武装した無謀なおっさんがカーリー神殿を強襲するアクションゲームである。 このゲームを今年の1月から始めて、先日100回クリアした。記念として、感想を書いておく。 Spelunkyはアクションゲームとしては…

放射線量と寿命の関係

長期被曝と寿命の関係性を調べることは難しい。長期にわたって被曝量を測定し続けること、被曝以外の寿命による影響を極力取り除くことが求められるが、 そのような実験方法は現実的ではない。 しかしながら、何らかの影響が見られるとすれば、その事実を知…

戦闘モジュール3

忙しいのですごく簡単なスクリプトを書いてみる。行動順、回避、技などを考えなければ非常に楽である。 同じようなのを作ったのは2年以上前になるのか・・・月日が経つのは早い。 ゾークとローグのあいのこみたいなのを作りたいのだが、まずはこのくらい単純…

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通…