2010/09/14

ライフゲーム作った


9LISP の宿題。Scheme(Gauche)で作りました。作りかけですが、動くので取りあえず。
行き当たりばったりで作ったこともあり、突っ込みどころ満載でちょっと恥ずかしいですが。。

ライフゲームの動き見てるのって意外と面白いんですね。

例えば、繰り返すパターン。
(load "./lifegame.scm")

(define-constant PULSER
  '((0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
    (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
    (0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0)
    (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
    (0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0)
    (0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0)
    (0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0)
    (0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0)
    (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
    (0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0)
    (0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0)
    (0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0)
    (0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0)
    (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
    (0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0)
    (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
    (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))

(define pl (endless-repeat-lifegame (const->auto-step-lifegame PULSER)))
(pl)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ● ○ ○ ○ ○ ○ ● ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ● ○ ○ ○ ○ ○ ● ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ● ● ○ ○ ○ ● ● ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ● ● ● ○ ○ ● ● ○ ● ● ○ ○ ● ● ● ○)
;; (○ ○ ○ ● ○ ● ○ ● ○ ● ○ ● ○ ● ○ ○ ○)
;; (○ ○ ○ ○ ○ ● ● ○ ○ ○ ● ● ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ● ● ○ ○ ○ ● ● ○ ○ ○ ○ ○)
;; (○ ○ ○ ● ○ ● ○ ● ○ ● ○ ● ○ ● ○ ○ ○)
;; (○ ● ● ● ○ ○ ● ● ○ ● ● ○ ○ ● ● ● ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ● ● ○ ○ ○ ● ● ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ● ○ ○ ○ ○ ○ ● ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ● ○ ○ ○ ○ ○ ● ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
(pl)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ● ● ○ ○ ○ ○ ○ ● ● ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ● ● ○ ○ ○ ● ● ○ ○ ○ ○ ○)
;; (○ ○ ● ○ ○ ● ○ ● ○ ● ○ ● ○ ○ ● ○ ○)
;; (○ ○ ● ● ● ○ ● ● ○ ● ● ○ ● ● ● ○ ○)
;; (○ ○ ○ ● ○ ● ○ ● ○ ● ○ ● ○ ● ○ ○ ○)
;; (○ ○ ○ ○ ● ● ● ○ ○ ○ ● ● ● ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ● ● ● ○ ○ ○ ● ● ● ○ ○ ○ ○)
;; (○ ○ ○ ● ○ ● ○ ● ○ ● ○ ● ○ ● ○ ○ ○)
;; (○ ○ ● ● ● ○ ● ● ○ ● ● ○ ● ● ● ○ ○)
;; (○ ○ ● ○ ○ ● ○ ● ○ ● ○ ● ○ ○ ● ○ ○)
;; (○ ○ ○ ○ ○ ● ● ○ ○ ○ ● ● ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ● ● ○ ○ ○ ○ ○ ● ● ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
(pl)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ● ● ● ○ ○ ○ ● ● ● ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ○ ● ○ ○ ○ ○ ● ○ ● ○ ○ ○ ○ ● ○ ○)
;; (○ ○ ● ○ ○ ○ ○ ● ○ ● ○ ○ ○ ○ ● ○ ○)
;; (○ ○ ● ○ ○ ○ ○ ● ○ ● ○ ○ ○ ○ ● ○ ○)
;; (○ ○ ○ ○ ● ● ● ○ ○ ○ ● ● ● ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ● ● ● ○ ○ ○ ● ● ● ○ ○ ○ ○)
;; (○ ○ ● ○ ○ ○ ○ ● ○ ● ○ ○ ○ ○ ● ○ ○)
;; (○ ○ ● ○ ○ ○ ○ ● ○ ● ○ ○ ○ ○ ● ○ ○)
;; (○ ○ ● ○ ○ ○ ○ ● ○ ● ○ ○ ○ ○ ● ○ ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ● ● ● ○ ○ ○ ● ● ● ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
(pl)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ● ○ ○ ○ ○ ○ ● ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ● ○ ○ ○ ○ ○ ● ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ● ● ○ ○ ○ ● ● ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ● ● ● ○ ○ ● ● ○ ● ● ○ ○ ● ● ● ○)
;; (○ ○ ○ ● ○ ● ○ ● ○ ● ○ ● ○ ● ○ ○ ○)
;; (○ ○ ○ ○ ○ ● ● ○ ○ ○ ● ● ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ● ● ○ ○ ○ ● ● ○ ○ ○ ○ ○)
;; (○ ○ ○ ● ○ ● ○ ● ○ ● ○ ● ○ ● ○ ○ ○)
;; (○ ● ● ● ○ ○ ● ● ○ ● ● ○ ○ ● ● ● ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ● ● ○ ○ ○ ● ● ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ● ○ ○ ○ ○ ○ ● ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ● ○ ○ ○ ○ ○ ● ○ ○ ○ ○ ○)
;; (○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○)

まだ UI がないので、IronScheme で作ろうかなぁとか考えてます。それか手っ取り早く C# で GUI 作ってデータ読み込むとか。。それなら最初から C# で作れば良いじゃんという話ですね。

プログラミングGauche

0 件のコメント:

コメントを投稿