松の木

娘ができてから蕎麦屋めぐりとか出来てないけど、蕎麦も好き。実際のところラーメンよりも蕎麦派

子連れでOKそうなとこがあったのでいってみた。それが松の木

20071215081

ざる二枚。海苔いらなかったのでもりでよかったかな。

20071215079

機械切りっぽいけど、揃ってる分喉越しはよい。二八かな、もうちょっとつなぎの割合多いのかな、分からん。

辛汁が器に最初から入ってたので、蕎麦湯がいい感じに飲めなかったので残念。 あと煙草の匂いでやられた。U隊長は気になんなかったけどって言ってたけど、座る場所が悪かったのかね。

MAWP 12章はNumber Theory

ProductName Mastering Algorithms With Perl
Jon Orwant,Jarkko Hietaniemi,John MacDonald
Oreilly & Associates Inc / ¥ 4,054 (1999-07)
通常3~5週間以内に発送

Modularとか。Chinese Remainder Theoremってなにがおもろいんだろうとか思ったが、RSA暗号がらみ?そのうちちゃんと読んでみる。

あとMiller-Rabinとかコラッツ予想とかそんな感じ。

MAWP 11章はNumber System

perlで複素数とか極座標とか扱うって話 あまり興味がなかったので流した。

ProductName Mastering Algorithms With Perl
Jon Orwant
Oreilly & Associates Inc / 2960円 ( 1999-07 )


最後の例のリーマンゼータ関数は面白かった。

まだ2章くらいしか読んでない数学ガールにも出てくるらしい

ProductName 数学ガール (数学ガールシリーズ 1)
結城 浩
ソフトバンククリエイティブ / 1890円 ( 2007-06-27 )


これも早く読みたいなぁ。

MAWP 10章はGeometric Algorithm

さわりだけなので、さらっとしている。

ProductName Mastering Algorithms With Perl
Jon Orwant,Jarkko Hietaniemi,John MacDonald
Oreilly & Associates Inc / ¥ 4,054 (1999-07)
通常3~5週間以内に発送

ちゃんと学びたければC++とかの本を探したほうがよいのかな?pymolとかAvogadroのソースを読むのがいいのかもしれんなぁ。

ドッキングシミュレーションとか色々気に入らない部分があるので、手を加えたい部分があったりとか、Caverみたいなの自分で書いてみたかったりするんだけどそういう書籍はないもんかな。

MAWP 9章終了

後半はparserとか

ProductName Mastering Algorithms With Perl
Jon Orwant,Jarkko Hietaniemi,John MacDonald
Oreilly & Associates Inc / ¥ 4,054 (1999-07)
通常3~5週間以内に発送

HOPも読んだし、再帰下降パーサもいじったことあるのでさらさらと。あとハフマン符号化とか。

結局1週間近くかけて読んだが文字列検索アルゴリズムがなかなか面白かった。

はてなスター

知りたいことを探してググッたら、

ビンゴの記事が自分の過去エントリだった

なんてことがあると、はてなスターを連打したくなる。

○8点な

PythonでBoyer-Moore法

ProductName Mastering Algorithms With Perl
Jon Orwant
Oreilly & Associates Inc / 2553円 ( 1999-07 )


perlは写経でいまいち理解度があやしいため、pythonでBoyer-Moore法を。パターンとの不一致の場合には何文字スキップできるか、一致した場合に何文字スキップできるかのテーブルを最初に作っておいて、スキップ幅の大きいほうでスキップしながらパターンマッチを進めていく。

def boyer_moore_bad_character (P):
   m = len(P)
   bc = [m] * 256
   j = m
   for char in list(P):
       bc[ord(char)] = j - 1
       j -= 1

   return m, bc

def boyer_moore_good_suffix (m,P):
   j = m + 1
   gs = [0] * j
   k = [0] * j
   k[m] = j
   for i in reversed(range(1,j)):
       while j <= m and P[i-1] != P[j-1]:
           if gs[j] == 0:
               gs[j] = j - i
           j = k[j]
       j -= 1
       k[i-1] = j

   kn = k[0]
   for j in range(m+1):
       if gs[j] == 0: gs[j] = kn
       if j == kn: kn = k[kn]

   gs.pop(0)
   return gs

def boyer_moore (T,P):
    (m,bc) = boyer_moore_bad_character(P)
    gs    = boyer_moore_good_suffix(m,P)

    (i, last_i, first_j) = (0, len(T)-m, m-1)

    for i in range(last_i+1):
        j = first_j
        while j >= 0 and T[i+j] == P[j]:
            j -= 1
        if j < 0:
            return i
        else:
            bcn = bc[ord(T[i+j])] - m + j + 1
            gsn = gs[j]
            i += bcn if bcn > gsn else gsn
    return -1

if __name__ == '__main__':
    print boyer_moore("perlpypythonruby","python")
  • pythonはコードの見通しがよいですな
  • perlと違ってsubstrとかやらなくてもいいので見通しがよい
  • perlのshiftがpop(0)なのがあれ。先頭をpopするってのが。
  • perlだと$a[5]=5とやれるけど、pythonはそれ以前の要素が自動的ににundefで埋まらない

for文でカウンタ変数使いたかったのでrangeをつかったけどPython流はどうやるのがよろしいんだろうか、、、カウンタ変数減算するのにfor i in reversed(range(1,j))だしな。

MAWP 9章はStrings

パターンマッチングとか。

ProductName Mastering Algorithms With Perl
Jon Orwant,Jarkko Hietaniemi,John MacDonald
Oreilly & Associates Inc / ¥ 4,036 (1999-07)
通常8~11日以内に発送

色々と検索アルゴリズムが紹介されていてなかなか進まない。

Boyer-Moore法を写経して、ついでにPythonで書き直してみたけどgood suffixのアルゴリズムがうまくかけません。perlのfor文とpythonのfor文は大分違うなと。というか、文字列の位置を記憶しながら逆向きに移動していってごにょごにょする方法が分からん。

for(;;)みたいなこと(カウンタ変数を使うっていうの?)をpythonでやる場合にはどういうことをすればいいんじゃと調べてみたら、そういう場合にはfor文は使わないのがお約束としか書いてなかったが、どうもwhile文を使えということらしい。

ふむ。

perlのコード見ながらpythonのコードに移植しようとすんのが間違ってるのかな。

OCamlとかErlangとか

U隊長がユッキーのためにアンパンマンのクリスマス向けDVDを借りにいくというのでお供した。といってもビデオは興味ないので併設している本屋でなんかいいもんないかなーと物色してた。 そうしたら、買おうかどうか悩んでAmazonウィッシュリストに突っ込んでおいた二冊が置いてあってびっくり。

ProductName プログラミング言語Erlang入門
柏原 正三
アスキー / ?円 ( 2007-11-29 )


こんな田舎で読むやついるのか?、近くに大学もないのに誰が一体、、、、もしや富士山麓に関数型言語を広めようという謎の黒い陰謀か?陰謀なのか?

ま、陰謀でも店員の発注ミスでもどっちでもいいけどねー、とぱらぱらとめくって、リアル中身検索。うーん、OCaml本にありがちな謎のへたうまラクダ絵のイメージとは違い、ちょっと教科書臭がしますな。Erlangのほうはというと、気になっていた並列計算の部分が最後のほうにちょろっと出ていて、まさに入門書って感じ。これだったらガウディ本読んでからもう一度検討したほうがいいかもってことで、強引に物欲を鎮めた。

また欲しくなったら再検討しよう。

Rの基礎とプログラミング技法がよさそう

同僚が買って持ってきたのでちょろっと見せてもらった。

ProductName Rの基礎とプログラミング技法
U.リゲス
シュプリンガー・ジャパン(株) / ?円 ( 2006-10-22 )


言語としてのRの説明が結構厚くて、遅延評価とか関数型言語としてのRとかオブジェクト指向的な使い方とか結構興味をそそるようなことが書いてあり、すごく欲しくなった。

あー欲しいけど、今月色々買っちゃったしなー。クリスマスという言い訳で本を何冊か買うかな。