2010-08-01から1ヶ月間の記事一覧

シェルピンスキーのギャスケット

Wikipedia パスカルの三角形の記述に「パスカルの三角形の奇数のみを塗りつぶすと、シェルピンスキーのギャスケットの一部分が出現する」と言う説明がある。 ;; x から max までのリストを作って返す。 ;; (mk-list 1 10) ;=> (1 2 3 4 5 6 7 8 9 10) (defun…

Common Lisp でパスカルの三角形(末尾再帰)

パスカルの三角形は数を三角形状に並べた物で、最上段に1があり、そこから下の行はその位置の右上の数と左上の数の和を記入して行ったものです。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1(x:3 Y:6)の値は(x:2 Y:5)と(x:3 Y:5)の和。(x:2 Y:5)の値は・・・と再帰で求め…

Common Lisp でフィボナッチ数列(末尾再帰)

フィボナッチ数列を末尾再帰で求める。 (defun mk-list (x max) (if (= x max) (list max) (cons x (mk-list (+ x 1) max)))) ;; 二重再帰 (defun fib (x) (cond ((= x 1) 1) ((= x 2) 1) (t (+ (fib (- x 1))(fib (- x 2)))))) (mapcar #'fib (mk-list 1 10…

Common Lisp でハノイの塔を解いてみる。

再帰を使うと美しく簡潔に解けることで有名な『ハノイの塔』を Common Lisp で塔の状態を表示しながら解いてみます。 ;; 三つある塔それぞれを表現します。 ;; 三つの塔を作ります。 ;; 塔"A"の重ねてあるリングを塔"B"に移動したい。 (setq tower-a '("A" (…

Common Lisp でエラトステネスの篩

Common Lisp でエラトステネスの篩をやってみてハマったところ。 make-list という関数は定義できません。 null? がないので atom を使った。 余りを求める関数は mod 。 ;; x から max までのリストを作って返す。 ;; (mk-list 1 10) ;=> (1 2 3 4 5 6 7 8 …

SBCL(Steel Bank Common Lisp)でコンパイルしてみる。

WIndowsからLispでCOMを使いたい思い調べましたところ、Steel Bank Common Lispが良さそうなのでインストールしてみました。 SBCLについては紫藤のWiki:SBCL(Steel Bank Common Lisp)に詳しい紹介があります。LISP で win32ole を使いたい訳です。 Common Li…