26082007 Meadow
WEB+DB PRESS Vol.40を読んでいたら、長年の疑問が解決した。
M-x eval-buffer
で.emacsのリロードができる。 いままでやり方がわからなかったので不本意ながら再起動してたという、、、
26082007 Meadow
WEB+DB PRESS Vol.40を読んでいたら、長年の疑問が解決した。
M-x eval-buffer
で.emacsのリロードができる。 いままでやり方がわからなかったので不本意ながら再起動してたという、、、
25082007 music
25082007 SICP
サケダメ宣言が出されたので、夜な夜なお茶を飲みながらSICP。あと、最近また電車通勤しているので毎朝SICP。
そんなわけで、3章も順調に消化。というか最後のほうはわかんない問題が多くて端折ったけど(3.60くらいから華麗にスルーした)。
特に無限ストリームと遅延評価のところを読み終えてクロージャってものに対する認識がちょっと変わったかも。
いままでは、オブジェクトは関数を保持したデータ、クロージャはデータを保持した関数なんて理解してたんだけど、今はクロージャは環境を隔離して時を止めたものみたいな感覚で接している。
そんな今ではλ萌え - たらいを後回しが面白く読めた。
25082007 SICP
yesコマンドみたいにひたすらyが出力される無限ストリーム
(define yes (cons-stream 'y yes))
SICPの3.5面白いけど、本の写経だとcons-streamが実装できないので手を動かす時に魅力が半減するよな。というか、ここまでくるとどうしても動かしてみたいでしょう。
ググって、真の写経(マクロ分からんが)、実行してみる。
gosh> (define yes (cons-stream 'y yes))
yes
gosh> (car yes)
y
gosh> (car yes)
y
gosh> (car yes)
y
gosh> (car yes)
y
gosh> (car yes)
y
位置を指定するとその位置のパスカル三角形の値を返す。再帰で。
sub pascal{
my ($n,$r) = @_;
$n<2?1:$r==0?1:$n==$r?1:pascal($n-1,$r-1)+pascal($n-1,$r);
}
print pascal(0,0);
print "\n";
print pascal(1,0);
print pascal(1,1);
print "\n";
print pascal(2,0);
...
print pascal(4,3);
print pascal(4,4);
print "\n";
三角形
$ perl pascal.pl
1
11
121
1331
14641
この関数を利用して、最小完全ハッシュ関数を。
sub cn {
my @table = @_;
my ($hash,$n,$r) = (0,5,2);
for (my $i=0;$n>$r && $r>0;$i++){
$n--;
$hash += pascal($n,$r--) if ($table[$i]);
}
return $hash;
}
が、「組合せ型の最小完全ハッシュ関数」の逆関数に持っていけなかった。再帰でパスカル三角形を右斜め下から左斜め方向に足していく組み合わせをつくっていって問い合わせの数値になったところのリストを返せばよいと思うんだけど、うまい書き方がみつからなかった。
22082007 SICP
リストの問題
(define (make-cycle x)
(set-cdr! (last-pair x) x)
x)
という定義に対し
gosh> (define z (make-cycle (list 'a 'b 'c)))
z
gosh> z
#0=(a b c . #0#)
これに(last-pair z)は無限ループ
Somaのなかでもダウンビート目の曲のコンピ
綺麗目でチルっぽいのが多いので、聴きやすい。
で、Envoy / Prologue 2 (Alignment Of The Planets)が収録されとる。
envoyのprologueはたぶん僕が院にあがるかあがらないかくらいの時に出たやつで、京阪三条のソレイユで買ったのを覚えている。っていうかこのヴァイナルはいまだに持ってる。ってもう10年以上も前の話なのか、、、、
21082007 chemoinformatics
21082007 chemoinformatics perl
職場でいつものようにGUIをチマチマいじってたら、隣で塩を取り除くコマンドがないっちゅよと困っていた。openbabelにあるんじゃねーの?どれどれと探してみたけどなかった。さらに、いやあるだろふつーはとかいってググってもcgiみたいなもんしかみつからなかった。
smilesだったら.でsplitしてゴニョればOKなんだけど、座標情報落っこちるから、perlmolとかopenbabelで実装して任意のフォーマットにできるようなコマンドが欲しい。
それを仮にwashmolとすれば
washmol -i input.sdf [-o out.smi]
みたいに。デフォルトではインプットと同じフォーマットで返すような、調子いいコマンドが欲しくなった。
僕は塩を取り除くのはwashと言ってるんだけど、desaltとか色々と呼び方があんのね。