2008-10-01から1ヶ月間の記事一覧

l99をschemeで解いてみる

cadrグループの人の日記でl99を知ったのでschemeで解いてみる。 P26あたりから難しくなってきた。 P26 組み合わせを作る問題*1 最初に書いたもの(nCnとnC0には対応してない) (define (combination n l) (if (<= n 1) (map list l) (apply append (unfold (…

今日したこと

gaucheの補完のelispを改良 cachefileを作成することにした 1回目以降は読み込みがはやくなった。 (存在する場合は)定義してあるファイルに飛べるようにした pipeとforkの使いかたを知った rubyのforkはblock内が子プロセス pipeとfork 自分の出力をフィル…

気づいたことをまとめる

今日分かったこと gaucheで式を一つだけ実行 module-exportではすべての手続きを調べられない aproposで手続きを調べられる nkfで"--overwrite"を使うと楽に文字コードを変更できる findの"-print0"と対応するのはxargsの"-0" ファイル名に空白が使われてい…

gaucheの補完用のelispを書いたりした

説明とか(あとで書く) 作ったもの get-procedure-list.scm gauche-completion.el get-procedure-list.scm (use file.util) (use srfi-1) (define (%filter file) (guard (e (else '())) (call-with-input-file file (lambda (in) (port-fold (lambda (line…

久しぶりなのでハフマン木のところを復習してみた。

時間を決めて、コードを書いてみた。 関数を作る度にテストしていったら、とても楽に進められた。 1時間ちょっとでハフマン木の部分の問題が全部解けた(と思う。計算量みつもりとか以外) 書いたコード (define (make-leaf symbol weight) (list 'leaf symb…

8パズルを解くプログラムを作ってみた

もっと効率の良い方法とかあるかも><。 (use srfi-1) (use gauche.sequence) ;;[1 2 3] ;;[4 5 6] ;;[7 8 ()]という形にしたら終了 ;;※空白は'()で表す。 ;;※上の表の状態はプログラム上では「(1 2 3 4 5 6 7 8 ())」と表す。 (define (make-state l) (if …

コードを書くときに2つのファイルを使うと良いような気がした。

昨日の続きです 関数の実行結果を調べたい時に、移動しなければいけないのが面倒くさい。 shellの環境に関数の情報が入っているのだから、別なファイルに実行用のコードを書いても良いような気がする。 そんなわけで以下の2つのファイルを同時に使って作業す…

javascriptとemacsで対話的に開発がしたい(html使わないです><)

schemeでプログラムを書くとき、少し関数を書いてから実行して結果をみるとかいうことをよくします。 そんなことをjavascriptでもしたいと思いました。 なので、てきとーにelispを書いてみました。 準備 javascriptのインタプリタが必要す。(eg.spidermonkey…